Зачем отключать стандартный выходной буфер при многопоточности?
Я пытаюсь научиться многопоточности, и у меня есть простой вопрос. В большинстве примеров, которые я нахожу, стандартный выходной буфер отключается перед тем, как позволить нескольким потокам использовать его с:
setbuf (стандартный вывод,NULL);
Зачем? Коды печатаются одинаково, если я уберу на них эту строку!
2 ответа
Возможно, что они не будут распечатывать то же самое - когда выход буферизуется, он может отображаться не сразу, что может изменить порядок вывода строк между потоками.
Отключение буферизации гарантирует, что вы знаете, в каком порядке выполнялись операторы.
Это предотвращает буферизацию, что означает, что вы лучше понимаете, когда что-то делали разные потоки. Т.е. вы чаще видите записи в stdout
как они происходят, а не после того, как некоторое количество данных было записано в stdout
,
Это также полезно делать, когда вы передаете выходные данные консольного приложения в пользовательский интерфейс.