MAINSAIL STREAMS User's Guide, Chapter 1

previous   next   top   contents   index   framed top   this page unframed


1. Introduction

This document describes STREAMS, a MAINSAIL package supporting implementation of portable distributed MAINSAIL applications.

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.

1.1. Version

This version of the MAINSAIL STREAMS User's Guide is current as of the proposed Version 16.30.1 of MAINSAIL (which has not yet been released).

This document is preliminary. Its contents have been updated to include information about the proposed 16.30.1 release, but the document has not been thoroughly proofread. Please contact XIDAK if you have any questions concerning this document or if you find any errors in it.

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.


previous   next   top   contents   index   framed top   this page unframed

MAINSAIL STREAMS User's Guide, Chapter 1