Anonymous user
Rendezvous: Difference between revisions
{{omit from|PARI/GP}}
(added F#) |
({{omit from|PARI/GP}}) |
||
Line 3:
Demonstrate the “rendezvous” communications technique by implementing a printer monitor.
==Detailed Description of Programming Task==
Rendezvous is a synchronization mechanism based on procedural decomposition. Rendezvous is similar to a procedure call with the difference that the caller and the callee belong to different [[task
* Waiting for the callee ready to accept the rendezvous;
* Engaging the rendezvous (servicing the entry point).
The caller may limit the waiting time to the callee to accept the rendezvous. I.e. a rendezvous request can be aborted if not yet accepted by the callee. When accepted the rendezvous is processed until its completion. During this time the caller and the callee
The callee
* Rendezvous to the same entry point from different tasks;
Line 19:
Language mechanism of [[exceptions]] (if any) has to be consistent with the rendezvous. In particular when an exception is propagated out of a rendezvous it shall do in both tasks. The exception propagation is synchronous within the rendezvous and asynchronous outside it.
An engaged rendezvous can be requeued by the callee to another entry point of its
Differently to messages which are usually asynchronous, rendezvous are synchronous, as it was stated before. Therefore a rendezvous does not require marshaling the parameters and a buffer to keep them. Further, rendezvous can be implemented without context switch. This makes rendezvous a more efficient than messaging.
Line 792:
{{omit from|E}} <!-- Not in the spirit of E concurrency; would be unenlightening to implement -->
{{omit from|JavaScript}} <!-- As yet, no multitasking unless you count setTimeout or multiple pages -->
{{omit from|
{{omit from|Retro}} <!-- no concurrency in the standard implementations -->
{{omit from|TI-83 BASIC}} {{omit from|TI-89 BASIC}} <!-- Does not have concurrency or background processes. -->
==See also==
|