【发布时间】:2013-01-16 06:02:22
【问题描述】:
我了解,为避免输出混合,多个线程对 cout 和 cerr 的访问必须同步。在同时使用 cout 和 cerr 的程序中,单独锁定它们是否足够?还是同时写入 cout 和 cerr 仍然不安全?
编辑说明:我知道 cout 和 cerr 在 C++11 中是“线程安全的”。我的问题是,不同线程同时写入 cout 和写入 cerr 是否会像两次写入 cout 那样相互干扰(导致交错输入等)。
【问题讨论】:
-
它永远不会“不安全”。你可能只是没有得到你所期望的。
-
我想澄清一下。使用一个全局锁写入 cout 和 cerr 与分别使用单独的锁在行为上是否存在差异?
-
您可以使用不同的锁。它们不相互依赖。
-
或许将这个问题表述为“可能 cout 和 cerr 被分别锁定?”
标签: c++ thread-safety cout