【发布时间】:2010-12-01 18:56:03
【问题描述】:
我知道目前C++没有线程的概念,但是this article is saying:
类型安全、线程安全、可移植 日志记录机制
.....
fprintf()函数是线程安全的, 所以即使这个日志是从 不同的线程,输出线 不会乱码。
cout、cerr 和 clog 呢?
我认为这个问题也适用于 C++ 中的所有类型的流类型,例如 fstream 和 stringstream。
【问题讨论】:
-
@GManNickG:我使用 Visual Studio 2013 C++,但 cout 仍然不是线程安全的。屏幕上的输出大多已损坏/混合。
-
@MehmetFide:线程安全不同于同步(混合/交错字符串); C++11 标准保证,在使用来自不同线程的这些对象时,实现不会导致数据竞争,而您可以确保多个
operator<<调用是同步的。
标签: c++ thread-safety iostream