Adding Concurrency to a Programming Language.
Peter A. Buhr, G. Ditchfeld · 1992
A programming language that lacks facilities for concurrent programming can gain those facilities in two ways: the language can be extended with additional constructs, which will reflect a particular model of concurrency, or libraries of types and routines can be written with different libraries implementing different models. This paper examines the two approaches, for object-oriented and non-object-oriented languages. Examples show that concurrency interacts extensively with traditional programming language constructs, and that general elementary facilities for concurrency must be implemented at extremely low levels---the assembly language level, in some cases---and hence that safe support for concurrency requires language extension. 1 Introduction To take advantage of asynchronous hardware, such as I/O devices or multiple CPUs, a programming language must provide the ability to interact with other programs without blocking, such as calls to operating system I/O routines, or to start...