I am looking for a cross-platform C ++ library / work library or work queue library. The general idea is that my application will create some Task or Work objects, pass them to the master process or work queue, which, in turn, will do the work in separate threads or processes. To provide a little context, the application is a CD ripper, and the tasks I want to parallelize are things like โrip trackโ, โencode WAV to Mp3โ, etc.
My basic requirements:
- You must maintain a customizable number of concurrent tasks.
- Dependencies between tasks must be maintained so that tasks are not completed until all tasks for which they depend have been completed.
- Must allow cancellation of tasks (or at least not prevent me from canceling encoding in my own tasks).
- Must allow reporting status and progress information to the main application stream.
- It should work with Windows, Mac OS X and Linux.
- Must be open source.
It would be especially nice if this library also:
- Integrated with Qt signal / slot mechanism.
- Supports the use of threads or processes to perform tasks.
By analogy, I'm looking for something similar to the Java ExecutorService or some other similar thread pool library, but in cross-platform C ++. Does anyone know such a beast?
Thanks!
source
share