我正在用C++和Qt构建CD开膛手应用程序。我想并行化应用程序,以便可以同时编码多个轨道。因此,我已经以这样的方式构建了应用程序,即编码轨道是一个“任务”,并且我正在研究一种机制来同时运行一些这些任务。当然,我可以使用线程来完成此任务,并编写自己的任务队列或工作管理器,但我认为英特尔的线程构建模块(TBB)可能是更好的工具。然而,我有几个问题。基于Qt的CD开膛手的线程构建模块(TBB)?
- 将FLAV,Ogg Vorbis或Mp3文件中的WAV文件编码为tbb :: task会有效吗?本教程文档指出,“如果线程频繁阻塞,则在使用任务调度程序时会出现性能损失”。我不认为我的编码任务经常会阻塞互斥锁,但是需要相对频繁地访问磁盘,因为他们必须从磁盘读取WAV数据才能进行编码。本教程描述的这种磁盘活动级别是否存在问题?
- TBB能否与Qt合作?当使用Qt线程时,您可以在线程间透明地使用Qt的信号/插槽机制。如果我使用tbb :: tasks而不是Qt线程,情况会如此吗?会不会有其他“陷阱”?
感谢您提供的任何见解。