2010-12-04 3 views
10

Можно создать дубликат:
stdout thread-safe in C on Linux?Можно ли потокобезопасно вызывать printf в потоках, которые запускаются одновременно?

Say thread1 и thread2 похожи и в конце своей работы они оба Printf. Это потокобезопасность или им нужно как-то заблокировать printf?

Связано это с stdout? Что делать, если вы выполняете fflush (stdout) после каждого printf? Что-то меняет?

+1

См. Http://stackoverflow.com/questions/467938/stdout-thread-safe-in-c-on-linux – icecrime 2010-12-04 13:18:04

ответ

11

POSIX.1 и С-функция языка , которые работают по характеру потоки (представлены указателями на объекты типа файла) которые требуются для POSIX.1c быть реализовано таким образом, что Реентерабельности (см. ИСО/МЭК 9945: 1-1996, §8.2).

см Thread-safety and POSIX.1

Примечания: Некоторые функции могут быть возвратными или неповторно, в зависимости от своих аргументов.

+8

Эти функции являются * не * реентерабельными. Они потокобезопасны. Есть большая разница. Функции, которые являются реентерабельными, автоматически поточно-безопасны, но поточно-безопасные функции могут по-прежнему затормозить (или, что еще хуже), если они снова вызваны из того же потока, в котором они уже работают (например, из обработчика сигналов). – 2010-12-04 13:37:33

Смежные вопросы