In order to eliminate a need for buffering all together, a sending thread is blocked until a matching thread requests a message.
-
A thread can request a blocking point-to-point operation or a non-blocking one. The blocking operation will block only the thread that issued it, non-blocking allows a thread to proceed, returning an identifier. The identifier can be later checked to decide whether the operation has completed or not.
-
The remote services differ only by a fact that the servicing threads don't expect a request. Thus, there is a dedicated thread waiting for requests and activating appropriate handlers. Unlike the point-to-point variation, this method requires buffering.
|