Hi Nikolay
What im trying to do is, pass events on the following order W1 --> W2 --> W3 --> W4 but not all events need to be processed by every worker. My W2 worker is a I/O extensive code, so some events can skip it and just go to W3, but if all my threads in W2 is been used up on I/O process there will be no way to receive the event on W2 in the first place to skip it (W2 does not have free threads to pick from ringbuffer).
If I talk in terms of queues, basically im trying to have two different queues one is a fast queue which can process messages fast and go to the next step next is a slow queue which takes it time to process (FIFO is not important)
hope that make sense.
As you mentioned I can have two ringbuffers to do this, but im really trying to avoid that because i dont want another pooling of object and another overhead on copying details between objects to pass to the another ringbuffer.