9.4 The basicSystemEnv Library

The systemEnv fragment contains abstract superpattern:s for describing the BETA concepts of concurrent systems. The basic ideas are:

9.4.1 Basic concepts

Currently an exploratory style is used to experiment with different variants of the abstract patterns. The current version is thus far from any final form of definition and may contain errors. The separation into interface and implementation has not been completely carried out.

The abstractions defined here are based on the ones described in chapter 12 of the BETA book.

9.4.2 Changes from original design

The implementation is identical to the design in the BETA book, except for the following changes:

S[]->fork
conc(# do S1[]->start; S2[]->start; S3[]->start #)
alt(#do S1[]->start; S2[]->start; S3[]->start #)

9.4.3 New facilities

This implementation of systemenv included a few new facilities, not described in the BETA book:

9.4.4 The Concurrency is Simulated

In order to implement real concurrency, an interrupt mechanism must be implemented. This is currently not done. A component/system will thus keep the control until it makes an explicit or implicit SUSPEND. An implicit SUSPEND is made when a component must wait for a semaphore, executes the pause pattern, executes the sleep pattern, or performs a blocking communication using the shellEnv distribution libraries (not described in this manual).

9.4.5 Concurrency and User Interface Environments

User interface environments (such as X Window System) are usually event-driven in the sense that actions in the program are executed as a response to user input events. To handle this, a number of separate implementations of SystemEnv exists for the different user interface libraries, such as xtEnv, awEnv, motifEnv, and guiEnv:

See xsystemenv and guienvsystemenv for a description of using systemenv in conjunction with X and GUIenv programs, respectively.

For examples of using SystemEnv, see the demo directory.

Please note, that programs should only use one of the systemenv, xsystemenv, and guienvsystemenv fragments. It is a fairly common mistake in systemEnv programs to find more than one of these fragments.


Basic Libraries - Reference Manual
© 1990-2002 Mjølner Informatics
[Modified: Monday October 23rd 2000 at 11:49]