It's possible with
threadpool.sf.net:
If you are satisfied with statically weighted tasks you could use prioritized tasks (boost::threadpool::prio_task_func). Otherwise you have to write your own scheduler which updates the weights / priorities of your tasks. Writing a scheduler is fairly simple. Please take a look at the default task schedulers.