[comp.object] References for OO concurrency and concurrency Vs. inheritance

cjmchale@cs.tcd.ie (Ciaran McHale) (04/06/91)

Anyone who is working in the area of concurrency for object oriented
languages, whether the research concentrates on developing powerful
synchronisation mechanisms or the conflict between synchronisation and
inheritance, should find the following references of use.

(Try saying all that five time in quick sucession when you're drunk:-)

Sometime next week (when I'm not so brain dead) I'll post explaining
the conflict between synchronisation and inheritance.


@incollection{Path-Expressions-1,
          author =	"R. H. Campbell and A. N. Habermann",
           title =	"{The Specification Of Process Synchronisation
			 by Path Expressions}",
       booktitle =	"Lecture Notes in Computer Science, No. 16",
       publisher =	"Springer Verlag",
            year =	"1973",
           pages =	"89--102",
          annote =	"This is the original paper on path expressions.
			 The version of path expressions described here is
			 a bit primitive but the paper is still worth reading.",
	keywords =	"k-path-expressions, k-regular-path-expressions,
			 k-synchronisation"
}


@inbook{Path-Expressions-2,
          author =	"Maekawa and Oldehoeft and Oldehoeft",
           title =	"{Operating Systems---Advanced Concepts}",
         chapter =	"3.4.2",
	    type =	"Section",
           pages =	"71--79",
       publisher =	"Benjamin/Cummings",
            year =	"1987",
          annote =	"This gives an overview of both Open and
			 Predicate Path Expressions",
	keywords =	"k-path-expressions, k-predicate-path-expressions,
			 k-open-path-expressions, k-synchronisation"
}


@article{Path-Expressions-5,
          author =	"Roy H. Campbell and Robert B. Kolstad",
           title =	"{An Overview of Path Pascal's Design and the
			 Path Pascal User Manual}",
         journal =	"ACM Sigplan Notices",
            year =	"1980",
          volume =	"15",
          number =	"9",
           pages =	"13--24",
           month =	sep,
          annote =	"Path Pascal uses Open Path Expressions.",
	keywords =	"k-path-expressions,  k-open-path-expressions,
			 k-path-pascal"
}


@inproceedings{Path-Expressions-6,
          author =	"Sten Andler",
           title =	"{Predicate Path Expressions}",
       booktitle =	"Sixth Annual ACM Symposium on Principles of
			 Programming Languages",
            year =	"1979",
           pages =	"226--236",
         address =	"San Antonio, Texas",
          annote =	"This paper describes the usage of Predicate Path
			 Expressions, their formal semantics and an
			 efficient implementation.",
	keywords =	"k-path-expressions,  k-predicate-path-expressions"
}


@inproceedings{Other-Powerful-Sync-1,
          author =	"Chris Tomlinson and Vineet Singh",
           title =	"{Inheritance and Synchronisation with
			 Enabled-Sets}",
       booktitle =	"{OOPSLA} '89 Proceedings",
            year =	"1989",
           pages =	"103--112",
           month =	oct,
          annote =	"Enabled-Sets offer an easy way to inherit
			 synchronisation constraints. Also see
			 \cite{Other-Powerful-Sync-2}.",
	keywords =	"k-enabled-sets, k-inheritance, k-synchronisation"
}


@inproceedings{Other-Powerful-Sync-2,
          author =	"Dennis G. Kafura and Keung Hae Lee",
           title =	"{Inheritance in Actor Based Concurrent
			 Object-Orientated Languages}",
       booktitle =	"{ECOOP} 89",
            year =	"1989",
          editor =	"Stephen Cook",
           pages =	"131--145",
       publisher =	"Cambridge University Press",
           month =	jul,
          annote =	"This paper also appears in {\em The Computer
			 Journal\/}, VOL. 32, No. 4, 1989, pages 297--303.
			 The mechanism presented, {\em behaviour abstraction\/},
			 is really Enabled-Sets\cite{Other-Powerful-Sync-1}
			 by a different name.",
	keywords =	"k-enabled-sets,  k-inheritance,  k-synchronisation"
}


@book{Other-Powerful-Sync-3,
          author =	"Fran\c{c}oise Andr\'{e} and Daniel Herman and
			 Jean-Pierre Verjus",
           title =	"{Synchronisation of Parallel Programs}",
       publisher =	"North Oxford Academic",
            year =	"1985",
          series =	"Studies in Computer Science",
            note =	"Original French language edition
			 (Synchronisation de Programmes Parall\`{e}les, Dunod)
			 \copyright BORDAS 1983",
          annote =	"A whole book on using boolean expressions as a
			 means of expressing synchronisation constraints. This
			 book seems to have provided a basis for the
			 {\em Activation Conditions\/} of the Guide
			 language\cite{Comandos-Sync-3}.",
	keywords =	"k-synchronisation, k-synchronisation-counters"
}


@inproceedings{Theory-of-Synch-1,
          author =	"Toby Bloom",
           title =	"{Evaluating Synchronisation Mechanisms}",
       booktitle =	"Seventh International ACM Symposium on Operating
			 System Principles",
            year =	"1979",
           pages =	"24--32",
          annote =	"This paper discusses six features which an ideal
			 synchronisation mechanism should process and
			 discusses how existing mechanisms compare to this
			 ideal.",
	abstract =	"In recent years, many high-level synchronisation
			 constructs have been proposed. each claims to satisfy
			 criteria such as expressive power, ease of use,
			 and modifiability. Because these terms are so
			 impercise, we have no good methods for evaluating how
			 well these mechanisms actually meet such requirements.
			 This paper presents a methodology for performing such
			 an evaluation. Synchronisation problems are
			 categorised according to some basic properties, and
			 this categorisation is used in formulating more
			 precise definitions of the criteria mentioned, and in
			 devising techniques for accessing how well those
			 criteria are met.",
	keywords =	"k-synchronisation"
}


@article{Other-Powerful-Sync-4,
          author =	"Gregory R. Andrews",
           title =	"{Synchronising Resources}",
         journal =	"ACM Transactions on Programming Languages and
			 Systems",
            year =	"1981",
          volume =	"3",
          number =	"4",
           pages =	"405--430",
           month =	oct,
	keywords =	"k-synchronisation"
}


@article{Other-Powerful-Sync-5,
          author =	"Denis Caromel",
           title =	"{Service, Asynchrony, and Wait-By-Necessity}",
         journal =	"Journal of Object Orientated Programming (JOOP)",
            year =	"1989",
           pages =	"12--22",
           month =	nov,
          annote =	"This paper discusses the addition to Eiffel of a
			 {\em process object\/} so that objects are split into
			 two basic categories---passive and active. A much
			 better paper describing this mechanism can be found in
			 \cite{Other-Powerful-Sync-24}.",
	keywords =	"k-eiffel, k-active-objects"
}


@article{Monitors-4,
          author =	"{C.A.R.} Hoare",
           title =	"{Monitors: An Operating System Structuring
			 Concept}",
         journal =	"Communications of the ACM",
            year =	"1974",
          volume =	"17",
          number =	"10",
           pages =	"549--557",
           month =	oct,
	keywords =	"k-monitors"
}


@misc{Comandos-Sync-3,
          author =	"D. Decouchant and S. Krakowiak and M. Meysembourg
			 and M. Riveill and X. Rousset de Pina",
           title =	"{A Synchronisation Mechanism for Typed Objects
			 in a Distributed System}",
    howpublished =	"Presented at the workshop on
			 ``Object-Based Concurrent Programming'', OOPSLA '88,
			 San Diego",
            year =	"September 1988",
            note =	"Abstract in {\em ACM Sigplan Notices\/},
			 24(4):105--107, April 1989",
          annote =	"The Guide language uses {\em Activation Conditions\/},
			 which are boolean expressions on synchronisation
			 counters and instance variables, for expressing
			 synchronisation constraints.",
	keywords =	"k-synchronisation, k-guide, k-activation-conditions,
			 k-comandos"
}


@inproceedings{Misc-3,
          author =	"J. Eliot and B. Moss and Walter H. Kohler",
           title =	"{Concurrency Features for the Trellis/Owl
			 Language}",
       booktitle =	"{ECOOP} '87---European Conference on Object-Oriented
			 Programming",
            year =	"1987",
          editor =	"G. Goose and J. Hartmanis",
           pages =	"171--180",
       publisher =	"Springer-Verlag",
           month =	jun,
            note =	"This is Volume 276 of {\em Lecture Notes in Computer
			 Science\/}.",
	keywords =	"k-trellis, k-owl, k-concurrency, k-locks, k-queues"
}

@article{Misc-4,
          author =	"David L. Detlefs and Maurice P. Herlihy and
			 Jeannette M. Wing",
           title =	"{Inheritance of Synchronisation and Recovery
			 Properties in Avalon/C++}",
         journal =	"{IEEE} Computer",
            year =	"1988",
           pages =	"57--69",
           month =	dec,
	keywords =	"k-inheritance, k-synchronisation, k-transactions,
			 k-atomicity"
}


@inproceedings{Misc-5,
          author =	"Pierre America",
           title =	"{Inheritance and Subtyping in a Parallel
			 Object-Oriented Language}",
       booktitle =	"{ECOOP} '87---European Conference on Object-Oriented
			 Programming",
            year =	"1987",
          editor =	"G. Goos and J. Hartmanis",
           pages =	"234--242",
       publisher =	"Springer-Verlag",
           month =	jun,
            note =	"This is Volume 276 of {\em Lecture Notes in Computer
			 Science\/}.",
	keywords =	"k-inheritance"
}


@inproceedings{Other-Powerful-Sync-6,
          author =	"J. E. Grass and R. H. Campbell",
           title =	"{Mediators: A Synchronisation Mechanism}",
	booktitle =	"Proceedings of the Conference on Distributed
			 Computer Systems",
            year =	"1986",
           month = 	sep,
           pages =	"468--477",
    organization =	"IEEE",
	abstract =	"This paper describes a construct called a
			 {\em mediator\/}. Mediators support synchronisation
			 and scheduling for systems programming within
			 distributed systems. Mediators are based on a resource
			 view of systems, and fit within a programming
			 methodology that emphesises resource modularity,
			 synchronisation modularity and encapsulated
			 concurrency. The paper examines other existing
			 synchronisation mechanisms in the light of modular
			 programming requirements. Subsequently, a sample
			 syntax and semantics for mediators is presented with
			 many examples. 
		\par
			 The mediator includes many interesting features.
			 These include: an adaptation of guarded commands;
			 {\em keys\/} that allow requests to be examined and
			 manipulated before they recieve service; parallel
			 guard execution; coupled and uncoupled modes of
			 service execution.
		\par
			 Finally this paper discusses a few aspects of
			 implementation.",
	  annote =	"The mediator concept is very powerful but it provides
			 it's power at the price of some complexity.",
	keywords =	"k-synchronisation, k-mediators"
}


@unpublished{Comandos-Sync-7,
          author =	"D. Decouchant and P. le Dot and M. Riveill",
           title =	"{A Synchronisation Mechanism for an Object Oriented
			 Distributed System}",
            note =	"Bull-IMAG, Z. I. de Mayencin - 2, rue Vignate,
			 38610 Gi\`eres - France",
           month =	feb,
            year =	"1990",
	abstract =	"This paper presents a mechanism for synchronising
			 shared objects in a distributed system based on
			 persistant, typed objets. Synchronisation constraints
			 are expressed as separate control clauses and are
			 factored for a class of objects. The interference of
			 this mechanism with inheritance and transactions is
			 examined and solutions are proposed. Examples of
			 synchronised objects are provided and a
			 semaphore-based implementation of this mechanism is
			 described.",
          annote =	"This is basically an updated version of
			 \cite{Comandos-Sync-3}",
	keywords =	"k-comandos, k-guide, k-activation-conditions,
			 k-synchronisation, k-inheritance, k-transactions"
}


@inproceedings{Other-Powerful-Sync-7,
          author =	"O. M. Nierstrasz",
           title =	"{Active Objects in Hybrid}",
       booktitle =	"{OOPSLA} '87 Proceedings",
          editor =	"Norman Meyrowitz",
    organization =	"ACM",
            note =	"Special issue of {\em ACM SIGPLAN Notices\/},
			 22(12):243--253",
	abstract =	"Most object-oriented languages are strong on
			 reusability or on strong-typing, but weak on
			 concurrency. In response to this gap, we are developing
			 {\em Hybrid\/}, an object-oriented language in which
			 objects are the active entities. Objects in Hybrid are
			 organised into {\em domains\/}, and concurrent
			 executions into {\em activities\/}. All object
			 communications are based on remote procedure-calls.
			 Unstructured {\em sends\/} and {\em accepts\/} are
			 forbidden. To this the mechanisms of
			 {\em delegation\/} and {\em delay queues\/} are added
			 to enable switching and triggering of activities.
			 Concurrent subactivities and atomic actions are
			 provided for compactness and simplicity. We show how
			 solutions to many important concurrent problems, such
			 as a pipelining, constraint management and
			 ``administration'' can be compactly expressed using
			 these mechanisms.",
	keywords =	"k-hybrid, k-queues, k-delegation, k-atomicity,
			 k-active-objects"
}


@article{Other-Powerful-Sync-8,
          author =	"Anand Tripathi and Mehmet Aksit",
           title =	"{Communication, Scheduling, and Resource Management
			 in SINA}",
         journal =	"JOOP (Journal of Object Oriented Programming)",
            year =	"1988",
           pages =	"24--37",
           month =	nov,
	keywords =	"k-sina, k-concurrency, k-synchronisation"
}


@article{Other-Powerful-Sync-9,
          author =	"A. J. Gerber",
           title =	"{Process Synchronisaion by Counter Variables}",
         journal =	"ACM Operating Systems Review",
            year =	"1977",
          volume =	"11",
          number =	"4",
           pages =	"6--17",
           month =	oct,
	abstract =	"A new method for expressing synchronisation is
			 presented which derives from several concepts in
			 existing notational schemes. Synchronisation
			 conditions areexpressed in terms of (integer) counters
			 which are incorporated into the definitions of data
			 objects shared by several asynchronous processes.
			 It is shown that the method is at least as powerful as
			 PV-type synchronisation, and the solution to some
			 ``classical'' problems are presented using the
			 notation.",
	  annote =	"This is an early paper describing the use of
			 synchronisation counters and boolean guards. It is an
			 interesting read (even if only from a historical
			 viewpoint). Criticisms and defense of this paper
			 appear in
			 \cite{Other-Powerful-Sync-10,Other-Powerful-Sync-11}.",
	keywords =	"k-boolean-guards, k-synchronisation"
}


@misc{Other-Powerful-Sync-10,
          author =	"Sten Andler and Peter Feiler and A. Nico Habermann
			 and Walter Tichy",
           title =	"Letter to the editor",
    howpublished =	"ACM Operating Systems Review, 12(1):6--11",
           month =	jan,
            year =	"1978",
	  annote =	"This letter criticises Gerber's paper
			 \cite{Other-Powerful-Sync-9}.",
	keywords =	"k-synchronisation, k-boolean-guards"
}

@misc{Other-Powerful-Sync-11,
          author =	"A. J. Gerber",
           title =	"Letter to the editor",
    howpublished =	"ACM Operating Systems Review, 12(3):5--10",
           month =	jul,
            year =	"1978",
	  annote =	"This letter responds to the criticisms 
			 \cite{Other-Powerful-Sync-10} of the author' previous
			 paper \cite{Other-Powerful-Sync-9}.",
	keywords =	"k-synchronisation, k-boolean-guards"
}


@book{Other-Powerful-Sync-12,
          author =	"Akinori Yonezawa and Mario Tokoro",
           title =	"Object-Oriented Concurrent Programming",
       publisher =	"MIT Press",
            year =	"1987",
          series =	"Computer Systems Series",
	  annote =	"This book contains 10 papers in total. The systems
			 covered include Act~1, Actors, ABCL/1, Concurrent
			 Smalltalk, Orient84/K, POOL-T, the Formes System and
			 Omega.",
	keywords =	"k-synchronisation, k-concurrency, k-objects"
}


@phdthesis{Other-Powerful-Sync-13,
          author =	"Colin Atkinson",
           title =	"{An Object-Oriented Language for Software Reuse and
			 Distribution}",
          school =	"Department of Computing, Imperial College of Science,
			 Technology and Medicine, University of London",
         address =	"London SW7 2BZ",
            year =	"1990",
           month =	feb,
	abstract =	"\ldots
		\par
			 This thesis describes a language, DRAGOON, which
			 provides a uniform a coherent vehicle for supporting
			 reuse, distribution and reconfiguration in
			 large-scale, embedded systems. The language is
			 primarily ``object-oriented'', providing the powerful
			 reuse mechanisms of inheritance, polymorphism and
			 dynamic binding, but is also highly ``Ada-oriented''
			 in that it incorporates many Ada features for
			 ``programming-in-the-small'', and can be translated
			 into standard Ada for execution in a natural and
			 straightforward way.
		\par
			 \ldots In concurrent systems, the synchronisation
			 conditions ruling the relative execution of methods
			 are superimposed on purely ``sequential'' classes by
			 the inheritance of special predefined ``behavioural
			 classes''\ldots",
	  annote =	"This is a definitive work on DRAGOON. As can be
			 expected, this is much more complete and satisfying
			 than the articles on DRAGOON.",
	keywords =	"k-dragoon, k-synchronisation, k-denotic-logic
			 k-behavioural-classes"
}


@inproceedings{Other-Powerful-Sync-14,
          author =	"Andrea Di Maio and Cinzia Cardigno and Rami Bayan
			 and Catherine Destombes and Colin Atkinson",
           title =	"{DRAGOON: An Ada-based Object Oriented Language for
			 Concurrent, Real-Time, Distributed Systems}",
       booktitle =	"Ada-Europe International Conference",
            year =	"1989",
         address =	"Madrid",
           month =	jun,
	abstract =	"DRAGOON is a design and programming language that
			 enriches Ada with the typical features of an object
			 oriented paradigm and can be automatically translated
			 into Ada. This paper describes how it can be used to
			 design concurrent, distributable and dynamically
			 reconfigurable applications.",
	keywords =	"k-dragoon, k-synchronisation, k-denotic-logic
			 k-behavioural-classes"
}

@inproceedings{Other-Powerful-Sync-15,
          author =	"Stefano Genolini and Andrea Di Maio and Cinzia
			 Cardigno and Stephen Goldsack and Colin Atkinson",
           title =	"{Specifying Synchronisation Constraints in a Concurrent
			 Object-Oriented Language}",
       booktitle =	"Technology of O-O Languages and Systems (TOOLS '89)",
	abstract =	"This paper describes briefly how concurrency,
			 synchronisation and distribution are supported in the
			 object oriented language DRAGOON. In DRAGOON
			 separation of concerns for the functionality and the
			 synchronisation behaviour of an object is obtained by
			 using a form of inheritance. An abstract specification
			 of synchronisation properties is proposed that uses a
			 simple form of denotic logic.",
	keywords =	"k-dragoon, k-synchronisation, k-denotic-logic
			 k-behavioural-classes"
}


@misc{Other-Powerful-Sync-16,
          author =	"Colin Atkinson and Andrea Di Maio and Rami Bayan",
           title =	"{DRAGOON: An Object-Oriented Notation supporting the
			 reuse and Distribution of Ada Software}",
    howpublished =	"Position paper for Ada real-time issues workshop,
			Pitlochry",
           month =	jun,
            year =	"1989",
	abstract =	"Among the more radical proposals for changes to the
			 Ada standard in Ada9X are those advocating the
			 introduction of ``object-oriented'' features
			 exemplified by languages such as Smalltalk and Eiffel.
			 DRAGOON is a language which supports all the
			 fundamental concepts of object-oriented programming
			 (classes, inheritance, polymorphism, dynamic binding)
			 in an Ada style, while retaining most of the features
			 of current Ada. It also employs enhanced forms of
			 multiple inheritance to support concurrency,
			 distribution and reconfiguration. Although not
			 designed specifically as a proposal for the Ada9X
			 project, therefore, DRAGOON may serve as a basis for
			 the development of Ada in an ``object-oriented''
			 direction. This paper provides a brief overview of the
			 language.",
	keywords =	"k-dragoon, k-synchronisation, k-denotic-logic
			 k-behavioural-classes"
}


@article{Misc-11,
          author =	"Maurice Herlihy",
           title =	"{A Methodology for Implementing Highly Concurrent Data
			 Structures}",
         journal =	"SIGPLAN Notices",
            year =	"1990",
          volume =	"25",
          number =	"3",
           pages =	"197--206",
           month =	mar,
            note =	"Special Issue: Second ACM SIGPLAN Synmposium on
			 Principles \& Practice of Parallel Programming
			 (PPOPP)",
	abstract =	"A {\em concurrent object\/} is a data structure shared
			 by concurrent processes. Conventional techniques for
			 implementing concurrent objects typically rely on
			 {\em critical sections\/}: ensuring that only one
			 process at a time can operate on the object.
			 Nevertheless, critical sections are poorly suited for
			 asynchronous systems: If one process is halted or
			 delayed in a critical section, other, non-faulty
			 processes will be unable to progress. By contrast, a
			 concurrent object implementation is
			 {\em non-blocking\/} is it always guarantees that some
			 process will complete an operation in a finite number
			 of steps, and it is wait-free if it guarantees that
			 {\em each\/} process will complete an operation in a
			 finite number of steps. This paper proposes a new
			 methodology for constructing non-blocking and wait-free
			 implementations of concurrent objects. The object's
			 representation and operations are written as stylised
			 sequential programs, with no explicit synchronisation.
			 Each sequential operation will is automatically
			 transformed into a non-blocking or wait-free operation
			 using novel synchronisation and memory management
			 algorithms. These algorithms are presented for a
			 multiple instruction/multiple data (MIMD) architecture
			 in which $n$ processes communicate by applying
			 {\em read}, {\em write}, and {\em compare\&swap\/}
			 operations to a shared memory.",
	  annote =	"I can't seem to grasp all of this paper. However, what
			 I do understand is that this is important research.
			 Hopefully in a few years the ideas in this paper will
			 have matured a bit more and will be more accessable.",
	keywords =	"k-synchronisation"
}


@inproceedings{Monitors-12,
          author =	"Robert Seliger",
           title =	"{Extending C++ to Support Remote Procedure Call,
			 Concurrency, Exception Handling, and Garbage
			 Collection}",
       booktitle =	"USENIX C++ Conference Proceedings",
            year =	"1990",
           pages =	"241--261",
         address =	"San Francisco, California",
           month =	"9--11 April",
	  annote =	"The concurrency mechanism used is a variation of
			 monitors. As such it is not very exciting but it has
			 been integrated quite well into the C++ language.
			 What is most surprising is that Monitors are still
			 being used 16 years after Hoare's paper on them.
			 Not too many other high level synchronisation
			 mechanisms can claim that (Path Expressions being the
			 only other example that springs to mind).",
	keywords =	"k-monitors, k-C++, k-exceptions, k-RPC,
			 k-garbage-collection"
}


@inproceedings{Other-Powerful-Sync-24,
          author =	"Denis Caromel",
           title =	"{Concurrency: An Object-Oriented Approach}",
       booktitle =	"TOOLS 2 (Technology of Object-Oriented Languages
			 and Systems)",
            year =	"1990",
          editor =	"Jean B\'ezivin and Bertrand Meyer
			 and Jean-Marc Nerson",
           pages =	"183--197",
       publisher =	"Angkor",
	abstract =	"Object-oriented programming seems well-suited for
			 concurrent programming; the design of a system as a
			 collection of concurent executable objects is
			 attractive. While many attempts have been made to
			 provide object-oriented languages with a model of
			 concurrency, few of them deal with reusability and
			 methodology.
		 \par
			 We propose a concurrent model that takes into account
			 such important concerns. We insist on concept
			 unifications: the underlying reasons that make
			 object-oriented programming adapted to concurrency. It
			 leads us to propose a concurrent object-oriented
			 design method.
		 \par
			 The first section presents the model which makes use
			 of object-oriented techniques such as inheritance and
			 polymorphism. The second puts it in concrete form
			 through a small example. Then, we develop a concurrent
			 object-oriented method which takes advantage of the
			 unification of concepts. The main ideas are to
			 postpone the process structuring and to use
			 flexibility for refinements. A real time example
			 exercises the method. We conclude with implementation
			 issues and perspectives.",
	  annote =	"This paper does much more justice to Caromel's
			 synchronisation than his earlier paper
			 \cite{Other-Powerful-Sync-5}. The mechanism presented
			 in this paper is actually {\em quite\/} powerful
			 according to Bloom's evaluation mechanism
			 \cite{Theory-of-Synch-1}. To me it appears to be
			 rather like Mediators \cite{Other-Powerful-Sync-6} in
			 some regards (but more unified and easier to use).
			 This mechanism is for active objects with a single
			 thread of control which services requests (messages).
			 The synchronisation/scheduling policies are
			 implmeneted algorithmically rather than in a
			 declarative manner (Path Expressions,
			 synchronisation counters etc).",
	keywords =	"k-synchronisation, k-active-object"
}



Ciaran.
-- 
Ciaran McHale           "There's a lot to be said for verbosity."     ----
Department of Computer Science, Trinity College, Dublin 2, Ireland.   \  /
Telephone: +353-1-772941 ext 1538       FAX: +353-1-772204             \/
Telex: 93782 TCD EI                     email: cjmchale@cs.tcd.ie