Carlisle addresses the problem of defining the type of a communication channel that can be concurrently accessed by multiple processes. Fisher has used regular expression notation to define the type of an Occam channel [1]. Using this notation, a channel’s type is defined as an ordered sequence of types that can be read from or written to a channel. Furthermore, Fisher describes an algorithm by which a compiler can type-check processes that access a channel defined by a regular expression. In this context, a channel is shared by only two processes--one that writes to the channel and one that reads from it. This paper extends the regular expression notation to include a concurrency operator that allows for defining and type checking of data structures that are concurrently accessed by multiple processes.
The author reviews Fisher’s work and then introduces the extension with examples. In addition to type checking, the author briefly addresses data-routing issues and synchronization semantics that are introduced with the concurrent reading and writing of shared data structures. A formal definition of the concurrency operator is given in the context of a regular expression type-checking formalism. The author also compares the resulting type-checking algorithm with two other concurrent-event recognizers, one that uses predecessor automata and another based on augmented transition networks.
This work is an important contribution to concurrent programming, where it is necessary to specify the behavior of concurrent I/O to shared resources. The mechanism as described will not extend to physically parallel I/O to shared resources, however.