c++ - 我怎样才能用阻塞写入cout?

标签 c++ multithreading concurrency thread-safety blocking

我到处寻找示例并查看了 C++ 手册(我通过示例学习得最好)。

我需要的是一种可以写入标准输出并阻塞并发分配的方法。

有人建议我使用“protected cout”,但我不知道那是什么意思。 本来我一直在用'C's write,但是我因为这样做而失去了一些分数。

我想到的其他解决方案是使用信号量来保护 cout,因此它一次只能打印一个线程。但是我觉得那里有一个内置的 C++ ......

帮助将不胜感激。请不要将我链接到 http://www.cplusplus.com/ 中的任何内容没有给我一个例子。我是 C++ 的新手,如果我是阅读 cplusplus.com 上的 api 的专家,我就不会问这个问题。

编辑: 有关我的问题的更多信息。 不允许使用 C++11。 我不允许任何第 3 方库。所以boost是不行的。必须在其上执行的机器是 Unix 机器。

最终编辑: itwasntpete 是最接近正确答案的,但我无法选择评论。 信号量是我必须走的路。 @Casey 是的,我正在使用教授编写的第 3 方库,它为我们简化了并发性。但是我们不允许使用其他库。对于试图提供帮助的人来说,将其作为规则更容易。对不起!

最佳答案

我不认为流有任何内置的同步。在 C++03 中,cout 甚至不一定是线程安全的。在 C++11 中,它是同步的,但仍未同步。

看到这个问题: Is cout synchronized/thread-safe?

关于c++ - 我怎样才能用阻塞写入cout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20409868/

相关文章:

c++ - 在 C++ 中声明一个 struct 类型的二维数组

c++ - 如何交换 mpl::vector 的两个元素?

Pythonic 方式了解我的线程何时/为何退出

java - 优雅地停止正在运行的java程序

java - 我可以用java代码解决数据库并发问题吗?

c++ - 快速加载文件格式的寄存器宽度和解析

c++ - cocos2dx错误: opengl version too old

multithreading - 从非 UI QThread 修改 QStandardItemModel?

javascript - 为什么 Promise-Limit 在 Nodejs 中不起作用?

java - 这个 onCreate() 方法总是在 Foo() 构造函数之后运行吗?