C++ 및 Qt에서 CD 리퍼 응용 프로그램을 구축하고 있습니다. 여러 트랙을 동시에 인코딩 할 수 있도록 응용 프로그램을 병렬 처리하고 싶습니다. 따라서 트랙을 인코딩하는 작업이 "작업"인 방식으로 응용 프로그램을 구조화했으며이 작업의 일부를 동시에 실행하는 메커니즘을 연구하고 있습니다. 물론 스레드를 사용하여이 작업을 수행하고 내 작업 대기열 또는 작업 관리자를 작성할 수는 있지만 인텔의 스레딩 구성 요소 (TBB)가 작업을위한 더 나은 도구라고 생각했습니다. 그러나 몇 가지 질문이 있습니다.Qt 기반 CD 리퍼 용 스레딩 구성 요소 (TBB)?
- WAV 파일을 tbb :: task로 잘 작동하는 FLAC, Ogg Vorbis 또는 Mp3 파일로 인코딩하고 있습니까? 이 튜토리얼 문서에는 "스레드가 자주 차단되면 작업 스케줄러를 사용할 때 성능이 저하된다"고되어 있습니다. 인코딩 작업이 뮤텍스를 자주 차단할 것이라고 생각하지 않지만 엔코딩하기 위해 디스크에서 WAV 데이터를 읽어야하므로 비교적 자주 디스크에 액세스해야합니다. 이 레벨의 디스크 활동은이 자습서에서 설명한대로 문제가 있습니까?
- TBB가 Qt와 잘 작동합니까? Qt 쓰레드를 사용할 때 Qt의 시그널/슬롯 메커니즘을 쓰레드간에 투명하게 사용할 수 있습니다. Qt 쓰레드 대신에 tbb :: tasks를 사용한다면 마찬가지일까요? 다른 "잡았다"가 있을까요?
당신이 제공 할 수있는 통찰력을 주셔서 감사합니다.