2010-11-18 1 views
3

Я пытаюсь учиться многопоточности, и у меня есть простой вопрос. В большинстве примеров, которые я нахожу, стандартный выходной буфер отключается, прежде чем разрешить использовать несколько потоков:Зачем отключать стандартный выходной буфер при многопоточности?

setbuf (stdout, NULL);

Почему? Коды печатают то же самое, если я удаляю эту строку на них!

ответ

4

Возможно, что они не будут распечатывать то же самое - когда выход буферизуется, он может не отображаться сразу, что может изменить порядок, в котором линии выводятся между потоками.

Отключение буферизации гарантирует, что вы знаете, в каком порядке выполнялись операторы.

2

Это предотвращает буферизацию, что означает, что у вас есть лучшее чувство, когда различные нити что-то делают. I.e., вы, скорее всего, увидите записи в stdout по мере их появления, а не после того, как некоторое количество данных было записано в stdout.

Это также полезно делать, когда вы подключаете вывод консольного приложения к пользовательскому интерфейсу.