Ориентированы на многопотоковое исполнение потоки стандартного вывода в C++ (суд, cerr, помеха)?

Погружение В Python является книгой Python для опытных программистов.

10
задан AraK 27 September 2009 в 11:50
поделиться

3 ответа

В статье говорится о стандарте POSIX для API fprintf . Это ничего не говорит о потоках C ++. И это совершенно правильно, поскольку для этого потока нет таких гарантий.

Обратите внимание, что хотя класс ведения журнала в этой статье использует синтаксис потока C ++, он делает это через объект std :: ostringstream , который создается и уничтожается для каждого события регистрации и поэтому не используется потоками. Он использует fprintf для фактической записи контента в консоль.

Библиотека Microsoft C утверждает, что она совместима с POSIX, поэтому код в статье, вероятно, довольно широко переносится (как и многие другие популярные операционные системы совместимы с POSIX). Но это не означает, что стандартные потоки C ++ являются потокобезопасными.

9
ответ дан 3 December 2019 в 19:34
поделиться

Это будет специфическая деталь реализации. Вы можете спросить, есть ли у компилятора X с Run Time Library Y потокобезопасные стандартные потоки, но вы не можете спросить, есть ли у всех реализаций, потому что реализациям разрешено различаться в отношении безопасности потоков. Это отчасти означает, что C ++ не имеет встроенной концепции потоков. Все зависит от реализации.

9
ответ дан 3 December 2019 в 19:34
поделиться

Поскольку текущий стандарт C ++ даже не признает, что существуют вещи, называемые «потоками», он определенно не дает никаких гарантий в отношении безопасности потоков.

Все это определяется реализацией.

2
ответ дан 3 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: