previous next top contents index framed top this page unframed
The STREAMS package is not part of the MAINSAIL runtime system, but is a separately licensable package. Due to the difficulty of implementing portable interprocess communication and process control, XIDAK cannot guarantee that that the STREAMS package will be available on all platforms that support MAINSAIL, nor can XIDAK implement all STREAMS capabilities on all platforms for which XIDAK supports the STREAMS package. XIDAK will attempt to supply STREAMS on all platforms for which it makes technical and business sense, and to support all STREAMS capabilities on each such platform for which such capabilities can be effectively implemented. Accordingly, programs that make use of STREAMS must be written to adapt to the capabilities provided on each platform if they are to be used portably on more than one platform, and the programmer must understand that programs with absolute requirements for certain capabilities may not work at all on certain platforms.
As of the date of this document, STREAMS has seen fairly extensive use but may still be subject to improvement. In particular, additional PROCEDUREs may be added to provide a more convenient interface to some facilities. Some existing facilities may undergo minor interface changes.
If you use STREAMS, please don't hesitate to contact XIDAK with suggested improvements or descriptions of your problems.
1.2. Terminology
“Distributed computing” refers
to independent sequential algorithms that
run simultaneously or asynchronously on one or more computers
(“nodes”),
and the intercommunication facility (STREAMS)
by which the algorithms
communicate.
A “process” is an operating-system-specific unit of execution with its own context (e.g., address space, primary input and output, global variables, set of open files, and other resources). For example, all current implementations of MAINSAIL consist of a single process that is started with the MAINSAIL bootstrap. Most platforms allow multiple processes to run independently of each other, without requiring mutual awareness among separate processes (except where the algorithm desires to use interprocess communication).
“Scheduled coroutines” are independent threads of execution that run within a single MAINSAIL process (you can think of them as “featherweight processes”). Using scheduled coroutines, an application can implement cooperative multitasking within a single MAINSAIL process. Scheduled coroutines are implemented as ordinary MAINSAIL coroutines.
MAINSAIL STREAMS User's Guide, Chapter 1