Asynchronous communication mechanism

The role of an asynchronous communication mechanism (ACM) is to synchronize the transfer of data in a system between a writing process and a reading process operating concurrently.

Description
The mechanism by which the ACM performs its tasks varies heavily depending upon the situation in which the ACM is employed. A possible scenario is the writer outputs data at a higher rate than the reader can process it. Without an ACM, one of two things will happen:


 * If the system incorporates a buffer between processes (e.g., a Unix shell pipe), then data will accumulate and be processed at the reader's maximum rate. There are some circumstances in which this is a desirable characteristic (e.g. piping a file over SSH, or if all data in the set is important, and the reader's output does not need to be synchronised with the input).

If it is necessary to synchronize the input of the writer with the output of the reader, then the ACM can interface with the two systems, and make active decisions on how to handle each packet of information. If, for example, maximum synchronization is required, the ACM could be configured to drop packets, and output the newest packets at the reader's maximum speed.

Alternatively, if there is no buffer, some data may be lost. If this is undesirable, the ACM can provide this buffer, or process the data in such a way that minimal information is lost.