Author: Christian.Queinnec@lip6.fr

## To Learn More

The first requirements for concurrent algorithms arose from systems programming. For this application, the imperative model of shared memory is the most widely used. For example, the relation of mutual exclusion and semaphores are used to manage shared resources. The different low-level mechanisms of managing processes accessing shared memory are described in [Ari90].
Nonetheless, the possibility of expressing concurrent algorithms in one's favorite languages makes it possible to investigate this kind of algorithm, as presented in [And91]. It may be noted that while the concepts of such algorithms can simplify the solution of certain problems, the production of the corresponding programs is quite hard work.
The model of synchronous communication presented by CML, and followed by the `Event` module, is fully described in [Rep99]. The online version is at the following address:

### Link

http://cm.bell-labs.com/cm/cs/who/jhr/index.html

An interesting example is the threaded graphical library `EXene`, implemented in CML under X-Windows. The preceding link contains a pointer to this library.