Surely, there is a wide variety of use cases, some of them are more along the lines of what you're saying. My point, though, is that priorities are not about minimizing overall run time, as your documentation suggests. They are primarily about minimizing starvation or minimizing latency of *specific* threads or tasks at the expense of other threads and general performance. Whether that effect is used to achieve correctness, reduce latency or improve throughput is application-specific.
I see your point. Yes, the reason I started this lib was loop like pipelines and maybe I got too "settled" with that specific use case while writing that piece of documentation. The consumer producer problem is surely not the use case I started this library for and who knows how many more use cases are there. But my point is: Imagine you have an loop like pipeline. while (true){ update(); render(); } This could be a video game or any other graphical application. update() get performed by X threads each one having a specific task. In order to gain maximum FPS you want those threads to be able to finish as fast as possible. This is the use case I has in mind when I wrote that. But I see your point now. I will remove that statement and provide instead different examples of different use cases instead. Thanks for the feedback. Federico Abrignani.