
Could you tell me more about when we need more that one pool (piplined architectures for instance)?
Pipelined architectures could be used in network-applications/services (for instance web-services). The idea is to parallelize the receiving, parsing, processing of network-messages in different stages. Each stage could have its own threadpool (the stages maybe also use only one pool). The pattern comes from the pipeline architecture of modern RISC processors. A better description can be found here (chapter 6): http://www.cs.uwaterloo.ca/~brecht/papers/getpaper.php?file=eurosys-2007.pdf
What is the advantage to have one pool for each stage respect one pool for all the stages?
Imagine we have stage A which reads message from the network and stage B processing the messages read by A. If both use the same threadpool and mltiple clients send a large messages (ready will take some significant time) stage A coul possibly allocate all threads in the pool so not work-item in stage B can be executed. If both stages use different pools the processing of work-items is independent. B can executes its task even if stage A becomes a high load. regards, Oliver -- Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger