我正在用C++和Qt構建CD開膛手應用程序。我想並行化應用程序,以便可以同時編碼多個軌道。因此,我已經以這樣的方式構建了應用程序,即編碼軌道是一個「任務」,並且我正在研究一種機制來同時運行一些這些任務。當然,我可以使用線程來完成此任務,並編寫自己的任務隊列或工作管理器,但我認爲英特爾的線程構建模塊(TBB)可能是更好的工具。然而,我有幾個問題。基於Qt的CD開膛手的線程構建模塊(TBB)?
- 將FLAV,Ogg Vorbis或Mp3文件中的WAV文件編碼爲tbb :: task會有效嗎?本教程文檔指出,「如果線程頻繁阻塞,則在使用任務調度程序時會出現性能損失」。我不認爲我的編碼任務經常會阻塞互斥鎖,但是需要相對頻繁地訪問磁盤,因爲他們必須從磁盤讀取WAV數據才能進行編碼。本教程描述的這種磁盤活動級別是否存在問題?
- TBB能否與Qt合作?當使用Qt線程時,您可以在線程間透明地使用Qt的信號/插槽機制。如果我使用tbb :: tasks而不是Qt線程,情況會如此嗎?會不會有其他「陷阱」?
感謝您提供的任何見解。