On Mon, 16 Oct 2017 07:42:06 -0700, jn...@jnthn.net wrote: > So the question is if we can find a way to have 2 and 4, while > retaining 1 and 3, and at what cost.
Also noting that in order to preserve 3, then in a situation like: * "Thread" 1 sends message A * Handler for message A starts running * "Thread" 2 sends message B * Handler for message A emits a recursive message C * Handler for message A completes Then at this point, the next thing that needs to happen is for message B to be processed, for fairness. This means that "Thread" 1 needs to (non-blockingly, if in the pool) wait until message B has been processed, before it can do message C. If we can arrange for that to happen then I guess things would work out OK enough: the sender of A will have to wait a while, but the recursive message send of C was "its fault" for sending A.