gpt4 book ai didi

c++ - 调试线程时printf的作用

转载 作者:行者123 更新时间:2023-11-30 05:27:33 28 4
gpt4 key购买 nike

我目前在使用 Poco 线程加载波形数据、生成波形和计算节拍位置时遇到问题。我的音频线程与 RTAudio 用于传输我的数据的线程不同,因此重要的是它的互斥量不要锁定太久,因为 RTAudio(需要锁定我的音频互斥量)不能等待太久,否则会发生缓冲区欠载。 ..目前正在发生。现在即使程序处于空闲状态也开始发生;没有被要求加载任何东西。

我的想法是计算线程被阻止获取互斥锁的时间以及它们被锁定的时间,以找出问题所在并将其打印到控制台,所以这将类似于每帧 6 个 printf,每秒 60 帧的目标帧率。

我刚刚注意到,如果我停止打印到控制台,程序空闲时不会发生缓冲区不足,看起来这是我在一个帧中多次使用 printf 变得更糟的问题。

我想知道这是怎么发生的,但更重要的是,如果我不能使用 printf,我该如何监控线程时间?

最佳答案

POSIX 要求大多数标准 I/O 函数是线程安全的和原子的。这意味着在同一流上运行的多个 *printf 将相互阻塞。如果您不想锁定,您应该检查操作系统特定的非阻塞功能的文档。

类似问题:stdout thread-safe in C on Linux?

关于c++ - 调试线程时printf的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37226471/

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