我在写音乐播放器。我已经做了很多工作来改善音频回调的性能:
mlock
来避免页面错误。 thread_policy_set
(类似于here)将线程设置为实时约束。 有时仍然会发生下溢。我想知道如何调试它,因为我想知道是什么导致了它们。
最佳答案
我要尝试的是,如果我要在不到2ms的时间内完成一个过程,则在进入该过程时将设置一个2ms的闹钟中断,并在退出该过程时将其清除。
即使加类很少发生,也一定可以解决。
因此,当发生中断时,我可以在调试器中捕获它并检查堆栈。
这是否会花费额外的时间进行操作?
也许(也许不是),但多次这样做必定会揭示出一些有趣的东西。
我要做的另一件事就是简单地在回调本身中寻找加速。
为此,我会在它运行时手动将其随机多次暂停,并每次检查堆栈。
我只会忽略回调不在堆栈上的所有示例。
对于其余示例,回调位于堆栈中,它将在回调的状态序列中处于随机位置,因此,如果有任何事情正在做,其优化将节省大量时间,那么我将看到它在做它。
关于c++ - 如何配置音频回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21376695/