Ich baue eine CD-Ripper-Anwendung in C++ und Qt. Ich möchte die Anwendung so parallelisieren, dass mehrere Spuren gleichzeitig codiert werden können. Daher habe ich die Anwendung so strukturiert, dass die Codierung eines Tracks eine "Aufgabe" ist, und ich arbeite an einem Mechanismus, um einige dieser Aufgaben gleichzeitig auszuführen. Ich könnte dies natürlich mithilfe von Threads erreichen und meine eigene Aufgabenwarteschlange oder Arbeitsmanager schreiben, aber ich dachte, dass die Threading Building Blocks (TBB) von Intel ein besseres Werkzeug für den Job sein könnten. Ich habe jedoch ein paar Fragen.Threading Building Blocks (TBB) für Qt-basierten CD-Ripper?
- Kodiert eine WAV-Datei in eine FLAC-, Ogg Vorbis- oder Mp3-Datei, die als tbb :: task funktionieren würde? Das Tutorial-Dokument besagt, dass "wenn Threads häufig blockieren, ein Leistungsverlust bei der Verwendung des Task-Schedulers auftritt". Ich glaube nicht, dass meine Codierungsaufgaben für Mutexe häufig blockieren würden, aber sie müssen relativ häufig auf die Festplatte zugreifen, da sie die WAV-Daten von der Festplatte lesen müssen, um zu verschlüsseln. Ist diese Ebene der Festplattenaktivität in dem im Lernprogramm beschriebenen Sinne problematisch?
- Funktioniert TBB gut mit Qt? Wenn Sie Qt-Threads verwenden, können Sie den Qt-Mechanismus für Signale/Slots transparent über Threads verwenden. Wäre das genauso, wenn ich tbb :: tasks anstelle von Qt threads verwenden würde? Gäbe es andere "Gotchas"?
Vielen Dank für Ihre Einsichten.