Hi,
I'm the author of a boost based thread pool lib (http://threadpool.sf.net) mentioned before in the "boost::thread queries" thread and I would like to give you some insight in the lib's future. As there's strong request for further features I plan to extend the pool step by step. Scott Meyers inspired me with policy based design at one of this C++ workshop and therefore I'm going to provide more policies for the pool.
1. Task scheduling policies
Lifo, fifo, and priority based policies are already implemented. However, there's some work to be done to support bounded / blocking queues.
2. Pool resizing policies (Not implemented)
These policies control the number of threads in the pool: Fixed pool, growing pool, bounded pool, dynamic shrinking, ...
3. Future creation policy (Not implemented)
- General support for futures
- Implementation independence: support for arbitrary future implementations (
e.g. the future lib in boost vault)
- I plan to provide a simple future implementation modelled on Peter Dimov's proposal http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2096.html
4. General design
I think, the Java framework (J2SE5 as java.util.concurrent) is well designed. I plan to provide similar
functionality (futures, dynamic pools, etc) without relying on the
interface concept (using templates and boost::function/bind instead).
I have not yet read the document "Multithreading API for C++0X" (
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2094.html). Anyway, the threadpool lib should focus on providing a flexible, extensible, light-weight pool which can be used easily in high level concepts (like the Channel lib, fully featured futures, etc.).
Any ideas and comments are welcome.
Best regards,
Philipp