Sto costruendo un'applicazione CD ripper in C++ e Qt. Vorrei parallelizzare l'applicazione in modo tale che più tracce possano essere codificate contemporaneamente. Pertanto, ho strutturato l'applicazione in modo tale che la codifica di una traccia sia un "compito" e sto lavorando a un meccanismo per eseguire contemporaneamente un certo numero di queste attività. Naturalmente, potrei realizzare questo usando thread e scrivere la mia coda di attività o il mio manager di lavoro, ma pensavo che i Threading Building Blocks (TBB) di Intel potessero essere uno strumento migliore per il lavoro. Ho un paio di domande, comunque.Threading Building Blocks (TBB) per lo scarificatore di CD basato su Qt?
- Codifica un file WAV in un file FLAC, Ogg Vorbis o Mp3 qualcosa che funzionerebbe bene come un task :: task? Il documento tutorial afferma che "se i thread si bloccano frequentemente, si verifica una perdita di prestazioni quando si utilizza l'utilità di pianificazione". Non penso che i miei task di codifica possano bloccare frequentemente i mutex, ma è necessario accedere al disco relativamente frequentemente, poiché devono leggere i dati WAV dal disco per poterli codificare. Questo livello di attività del disco è problematico nel senso descritto dal tutorial?
- La TBB funziona bene con Qt? Quando si utilizzano i thread Qt, è possibile utilizzare il meccanismo di segnali/slot di Qt in modo trasparente attraverso i thread. Lo stesso sarebbe vero se usassi tbb :: tasks invece dei thread Qt? Ci sarebbero altri "trucchi"?
Grazie per eventuali approfondimenti che è possibile fornire.