Topic: message queues for communication

topics > computer science > Group: digital communication


asynchronous processing
client-server model for distributed systems
communication port
concurrency control by monitors
control file
data flow languages
implementing distributed systems and applications
interprocess communication
I/O streams
parameter passing by message
remote procedure call
Unix pipes
data flow machines


Multiple processes can communicate by messages passed through queue buffers. An information queue usually consists of a buffer, a sending process and a receiving process, but the buffer is unnecessary and multiple readers or writers may be defined. The same process may be both reader and writer. There may be a response-acknowledge queue for sending results and synchronizing messages. With multiple readers and writers, the processes are non-deterministic due to timing conditions. From the viewpoint of a single process, an information queue is a control vector or process sequencer. A network of processes interconnected by information queues is a data flow program. (cbb 5/80)
Subtopic: message passing up

Quote: a message is a typed collection of data objects. They may contain an address space, pointers, and capabilities for ports
Quote: use process groups for procedural message-passing systems; labeled by process name and numeric index
Quote: message-passing is the major alternative to monitors [»bacoDF10_2000]
Quote: message-passing usually restricts the allowable data types; e.g., occam only transmits scalars and array of scalars

Subtopic: formal protocol up

Quote: Sing# sends strongly typed messages over bidirectional channels; a state machine defines the channel's protocol [»taneAS5_2006]

Subtopic: streams up

Quote: the stream model replaces a memory cell with a pipeline and enque/deque operations [»wegnP_1979b]

Subtopic: data-driven up

Quote: a data-driven program is like a data-flow network with processing elements and data queues [»dennPJ_1980]
Quote: avoid timing-dependent behavior if all processes are data driven by messages received from one sender and processed in order [»dennPJ_1980]

Subtopic: work queue up

Quote: use work queues instead of thread per connection or thread per work unit [»smaaB2_2006]
Quote: keep number of threads near the number of CPUs

Subtopic: message queue as port up

Quote: on a full port, a task can suspend, error, or post one message for future transmission with acknowledgment [»acceM6_1986]

Subtopic: message queue as future up

Quote: use futures for concurrent return values, event objects, and macro-dataflow programming; wait until value is assigned; assign-once [»chriTW2_2002]

Subtopic: wait-free channel up

Quote: use wait-free, allocation-free channels to transfer data between high and low frequency tasks; wait-free for reader or writer [»spooD6_2006]

Subtopic: buffering up

Quote: buffer principle--a buffer pool smoothes short-term variations between consumers and producers, avoids needless blocking [»finkRA_1986]

Subtopic: message-passing and remote calls up

Quote: in a message-passing system, the sender can use procedure call semantics while the receiver use message queue semantics [»liskB10_1981]
Quote: message passing is convenient for intra-machine communication while remote procedure call is best for inter-machine communication [»cormGV5_1988]

Subtopic: source/destination vs. channel up

Quote: in most large systems, programmers want to send messages to a destination, rather than through a channel
Quote: conversational continuity: a process needs to reply to the sender even though the original message was forwarded [»wilsGV_1995]
Quote: most programmers use general-purpose routers to allow them to send messages between arbitrary processes

Subtopic: state messages up

Quote: state messages for single-writer multiple-reader; short, non-blocking, circular buffer; 1/4 the overhead for small messages [»zubeKM10_2001]

Subtopic: message queues up

Quote: input messages stored in a queue, only removed when completely processed [»giffDK12_1985]
Quote: a queued model of communication allows local time for each process and avoids issues of simultaneity [»stroRE5_1985]

Subtopic: asynchronous vs. synchronous up

Quote: synchronized communication simplifies programming, no buffers, efficient, data not lost, one process waits for the other [»mayD_1987]
Quote: use asynchronous communication because can be as efficient as synchronous and more flexible [»giffDK7_1985, OK]
Quote: parallel processes usually don't care what happens to results; an asynchronous 'out' statement is better than a monitor call [»carrN4_1989]
Quote: an earlier version of Amoeba has asynchronous RPC; a dreadful decision, impossible to program [»taneAS12_1990]
Quote: with unsynchronized communication, failure to acknowledge data can lead to timing effects [»mayD_1987]
Quote: nonblocking message sending increases concurrency at an excessively high cost
Quote: it is easy to implement buffering as a process that uses unbuffered, synchronized communication

Subtopic: large message up

Quote: Mach sends a large message as copy-on-write data via a temporary kernel address map [»acceM6_1986]

Subtopic: examples up

Quote: in Thoth and V, messages are for communication and processes are for concurrency [»cherDR4_1984]
Quote: Pilot provides interprocess communication via network streams; same machine optimization, routers, sockets; like PUP and TCP [»redeDD2_1980, OK]
Quote: a Pilot server listens for requests on an advertised network address; new network streams are assigned to a different network address [»redeDD2_1980]
QuoteRef: cbb_1973 ;;[reading (QuoteRef: mckeWM_1974) info queues-- create, destroy ,send, receive, conditional receive and send with and receive with interrupt (send and tell someone)
QuoteRef: cbb_1973 ;;1/12/74 infoqueues deal with information (delivered particularly) while events deal with presence (delivered globally)

Subtopic: problems with message passing up

Quote: procedural message passing is more complicated than data-parallel or shared-variable programs; use an application builder

Related Topics up

Group: sequences   (7 topics, 97 quotes)

Topic: asynchronous processing (30 items)
Topic: client-server model for distributed systems (25 items)
Topic: communication port (40 items)
Topic: concurrency control by monitors (24 items)
Topic: control file (10 items)
Topic: data flow languages (33 items)
Topic: implementing distributed systems and applications (41 items)
Topic: interprocess communication (29 items)
Topic: I/O streams (17 items)
Topic: parameter passing by message (31 items)
Topic: remote procedure call (44 items)
Topic: Unix pipes (10 items)
Topic: data flow machines
(14 items)

Updated barberCB 3/06
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.