gpt4 book ai didi

c++ - 用于多线程的快速同步 cout

转载 作者:行者123 更新时间:2023-11-27 23:02:09 25 4
gpt4 key购买 nike

最近,我遇到了一个关于在多线程应用程序中使用 cout 的相当普遍的问题,但有一点不同。我有几个回调函数,它们通过驱动程序由外部硬件调用。回调函数的主要目标是接收一些数据并将其存储在队列中,并在收集到一定数量的数据集后立即发出处理任务信号。回调函数需要尽可能快地运行,以软实时响应硬件。我的问题是:有时我的队列已满,我必须通过向控制台打印警告来处理这种情况(硬性要求)。当我使用多个线程时,我创建了一个包装函数,它使用互斥锁来同步 cout。不幸的是,在某些情况下,等待访问 cout 可能会花费很长时间,以至于我的回调函数结束速度不够快,无法在超时前响应硬件。我的解决方案是为每个可能的错误使用一个原子变量来计算发生的次数,并进一步执行定期检查这些变量并随后打印出消息的任务,但我很确定这不是解决我的问题的最佳方法性能问题。是否有针对此类问题的通用方法?有什么建议可以改进或简化我的解决方案吗?

提前致谢

最佳答案

不要在热路径中写入输出。

相反,将您要记录的内容排队(最好是原始数据而不是完全格式化的字符串)。运行另一个 OOB 线程来获取这些内容并记录下来。

关于c++ - 用于多线程的快速同步 cout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26676969/

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