【发布时间】:2013-12-05 20:20:55
【问题描述】:
我到处寻找示例并查看了 C++ 手册(我通过示例学习得最好)。
我需要的是一种可以写入标准输出并阻塞并发分配的方法。
有人建议我使用“受保护的 cout”,但我不知道这是什么意思。 最初我一直在使用's C's write,但这样做会失去一些分数。
我想到的其他解决方案是使用信号量来保护 cout,因此它一次只能打印一个线程。但我觉得那里有一个内置的 C++ ......
我们将不胜感激。如果不给我一个例子,请不要将我链接到http://www.cplusplus.com/ 的任何内容。我对 C++ 比较陌生,如果我是阅读 cplusplus.com 上 api 的专业人士,我不会问这个问题。
编辑: 有关我的问题的更多信息。 不允许使用 C++11。 我不允许任何第 3 方库。所以boost是不行的。必须执行此操作的机器是 Unix 机器。
最终编辑: itwasntpete 是最接近正确答案的,但我不能选择 cmets。 信号量是我必须走的路。 @Casey 是的,我正在使用教授编写的第 3 方库,它为我们简化了并发性。但是我们不允许使用其他库。对于试图提供帮助的人来说,将其作为一项规则更容易。对不起!
【问题讨论】:
-
IIRC 它依赖于操作系统和实现 ...
-
c++11有空吗? -
完全阻塞是什么意思?防止线程相互覆盖?
-
没有内置的,你必须自己做。既然你知道信号量,那么你也应该知道mutex。
-
如果没有“第三方库”,在 C++11 之前的 C++ 中,多线程是不可能的。看你用什么“第三方库”来实现并发,利用它的互斥机制提供对
cout的独占访问。
标签: c++ multithreading concurrency thread-safety blocking