On 01/24/2014 04:05 PM, Kenneth Adam Miller wrote:
+--------------------------------------------------------------------+ | | v | Pool A RR Thread Set 1 Router X | PULL-PUSH --==> PULL-read-PUSH ==--> PULL-PUSH --==> PULL Thread Set 2 PUSH \ / +-compress-+ Pool B RR / \ PULL-PUSH --==> PULL PUSH ^ || | || +----------- PUSH-write-PULL <--==++ Pool C
Questions: how do I have a separate thread poll on multiple shared message queues? Like, I have a thread pool that both receives requests for buffer handles and that receives old buffer handles to recycle.
Your architecture looks a like a case of premature optimization. I suggest that you use the Leader/Followers design pattern [1] instead. You have just one thread pool and let each thread perform operation A, B, and C before it returns to recycle the buffer and wait for the next task. This way you can avoid several queue and thread context-switches. [1] http://www.cs.wustl.edu/~schmidt/PDF/lf.pdf