Check out the new USENIX Web site. next up previous
Next: CONCLUSIONS Up: RELATED WORK Previous: Coordination Languages

Logic Programming

In concurrent logic programming (CLP) languages[31], each goal atom is viewed as a process. Concurrent processes communicate and synchronize via instantiation of shared logical variables. In COCA, however, an active rule is fired upon the arrival of a message at a gate or more generally the occurrence of an event. Concurrency only occurs among those active rules. We do not deliberately pursue the fine-granule parallelism in CLP languages. Concurrent threads in the same cocavm synchronize through operations against the shared internal database and different cocavms communicate through explicit message passing.

A number of object-oriented extensions to Prolog have been proposed[4]. As was discussed in section 4.8, the extensions we made in COCA, however, are no more than syntactical sugars. They do not have any impact on the language semantics.

Delta-Prolog[25] augmented Prolog with CSP-like communication primitives. But it is not reactive, since it may backtrack on communication[31]. [30] studied the embedding of Linda in a CLP language. Concurrent constraint programming[28] embodies explicit mechanisms for communication and synchronization consisting of two kinds of actions, ask and tell. Semantics about concurrency and communication in logic has been well-studied in the literature, e.g. [25], [2], and [29].


next up previous
Next: CONCLUSIONS Up: RELATED WORK Previous: Coordination Languages
Du Li
8/25/1999