buffers; this is slower but safer for threaded programs where threads often have relatively low stack size limits.