首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++线程安全(cout、cerr、clog)中的标准输出流是否安全?

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

Stack Overflow用户
提问于 2009-09-27 11:39:16
回答 2查看 7.9K关注 0票数 11

我知道在当前的C++中没有线程的概念,但是这篇文章是说

A类型,线程安全,便携式日志记录机制 . fprintf()函数是threadsafe,所以即使这个日志来自不同的线程,输出行也不会被置乱。

那么coutcerrclog呢?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-27 11:54:14

本文对fprintf API的POSIX标准进行了说明。它没有提到C++流。这是相当正确的,因为在这些河流上没有这样的保证。

注意,尽管本文中的日志类使用C++流语法,但它通过为每个日志事件创建和销毁的std::ostringstream对象来实现这一点,因此在线程之间不共享。它使用fprintf将内容实际写入控制台。

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

票数 9
EN

Stack Overflow用户

发布于 2009-09-27 12:11:12

由于当前的C++标准甚至不承认有一些被称为“线程”的东西,所以它根本没有提供任何线程安全方面的保证。

这都是实现定义的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1483403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档