Зачем отключать стандартный выходной буфер при многопоточности?

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

setbuf (стандартный вывод,NULL);

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

2 ответа

Решение

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

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

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

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

Другие вопросы по тегам