Communicating to fellow programmers that the concept of blocking in process-oriented design is perfectly acceptable, while using a word with basically negative connotations, is difficult. The bare need to do it often means that misunderstanding this concept is common and harmful. The first contender on a “blocking” channel has alternatively been said (by several people) to wait (rather than block) on the channel. This seems a more accurate description and is certainly more positive.
A better correspondence between the negative meaning and semantics is when “blocking” describes serious side effects on the temporal properties of other concurrent components. This is the correctly feared blocking.
One example is when a process has too many internal work-tasks to handle and any one such cannot acceptably “block” for other work tasks for too long. The “blocking-on-each-other” blocking type that we know as deadlock is perhaps the worst kind. A system cannot survive for long should this happen (in a sub-system, say).
When the literature over the last years talks about non-blocking algorithms, it has in fact been talking about the “waiting” type. It might be easier to refer to this when describing the semantics of a synchronous (and, in this context, non-blocking) CSP type channel. The same could be reasoned of the interface-RPC-call or entry type mechanisms of Ada and xC: i.e. that they are the “waiting” type. To gain understanding and acceptance of these types of solutions, we should simply avoid the “blocking” term in the CSP context. Phrases like “wait”, “yield”, “synchronous” and “non-buffered” should suffice. This fringe presentation will explore this further and invite discussion. Slides used in the presentation can be downloaded from .
IOS Press, Inc.
6751 Tepper Drive
Clifton, VA 20124
Tel.: +1 703 830 6300
Fax: +1 703 830 2300 firstname.lastname@example.org
(Corporate matters and books only) IOS Press c/o Accucoms US, Inc.
For North America Sales and Customer Service
West Point Commons
Lansdale PA 19446
Tel.: +1 866 855 8967
Fax: +1 215 660 5042 email@example.com