single-thread buffer