gpt4 book ai didi

c++ - C++ 中的标准输出流是否是线程安全的(cout、cerr、clog)?

转载 作者:可可西里 更新时间:2023-11-01 15:40:38 25 4
gpt4 key购买 nike

我知道目前的C++中没有线程的概念,但是this article is saying :

A typesafe, threadsafe, portable logging mechanism

.....

The fprintf() function is threadsafe, so even if this log is used from different threads, the output lines won't be scrambled.

coutcerrclog 呢?

我认为这个问题也适用于 C++ 中的所有流类型,例如 fstreamstringstream

最佳答案

文章声明了 fprintf API 的 POSIX 标准。它没有提到 C++ 流。这是完全正确的,因为对这些流没有这样的保证。

请注意,虽然那篇文章中的日志记录类使用 C++ 流语法,但它是通过为每个日志记录事件创建和销毁的 std::ostringstream 对象执行此操作的,因此不在两者之间共享线程。它使用 fprintf 将内容实际写入控制台。

Microsoft C 库声称与 POSIX 兼容,因此本文中的代码可能具有广泛的可移植性(因为许多其他流行的操作系统都与 POSIX 兼容)。但这并不意味着标准 C++ 流是线程安全的。

关于c++ - C++ 中的标准输出流是否是线程安全的(cout、cerr、clog)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1483403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com