gpt4 book ai didi

c++ - 避免不同线程阻塞碰撞的简单方法?

转载 作者:搜寻专家 更新时间:2023-10-31 01:19:39 25 4
gpt4 key购买 nike

我有一个多线程程序,其中两个单独的线程将调试输出发送到 std::clog 并且输出散布。我想找到一种简单的方法来强制输出至少保持独立,除了输出中的换行符。这样,可以更容易地解释调试输出。在某些地方,我在输出之前插入了一个 sleep(1) 并将输出收集到一个字符串中,然后再将其发送到 clog 以减少碰撞的机会,但我更喜欢一个更健壮和可靠的解决方案。

有没有一种简单的方法可以确保每个线程在另一个线程进入并写入自己的输出行之前一次将整行写入 std::clog?

最佳答案

没有特别简单的方法可以做到这一点,这里有一个关于它的扩展讨论:http://www.cplusplus.com/forum/general/27760/

通过创建一个新的 AtomicStream,问题在某种程度上得到了解决,它在流式传输任何其他内容之前以原子方式写入整行(这是通过缓冲技巧完成的)。您需要想出一个类似的解决方案。抱歉,这个不容易回答的问题 -- 线程同步必须以某种方式纳入您的解决方案。

这可能是衍生的,但如果您的 std::clog 重定向到一个文件,您也可以为多个线程拥有多个文件。

关于c++ - 避免不同线程阻塞碰撞的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5851289/

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