All Manuals > LispWorks® User Guide and Reference Manual > 42 The MP Package

process-send Function

Summary

Sends an object to the mailbox of a given process.

Package

mp

Signature

process-send process object &key change-priority limit timeout error-if-dead-p => success

Arguments
process
A process.
object
An object.
change-priority
A fixnum, nil, t, or :default.
limit
An integer or nil.
timeout
A non-negative real or nil.
error-if-dead-p
A generalized boolean.
Values
success
A boolean.
Description

The function process-send queues object in the mailbox of the given process.

object can any kind of Lisp object, and it is up to the receiving process to interpret it.

process-send only sends the event: it is the responsibility of the receiving process to actually read the event and then interpret it. Reading is typically done by calling process-wait-for-event. Interpreting the event is up the caller of process-wait-for-event. In the "standard" situation, for example in a process started by CAPI, the object will be processed as an event by calling general-handle-event.

process-send actually uses the process-mailbox of process, creating a mailbox for process if it does not already have one. In principle object can be read by another process, by calling mailbox-read (or process-wait-for-event) on the mailbox.

If change-priority, which has a default value of :default, is non-nil, it controls how the priority of that process is calculated as follows:

error-if-dead-p defaults to nil, which means that if process-send is called with a dead process, it just returns false. If error-if-dead-p is non-nil, when process-send is called on a dead process it signals a continuable error.

limit defaults to nil. If it is non-nil, it must be a positive integer that specifies the maximum size to which process-send may expand the mailbox of the process. When limit is non-nil. process-send adds the object to the mailbox as if by:

(mailbox-send-limited mailbox object limit timeout)

See mailbox-send-limited for details.

timeout defaults to nil and is used when limit is non-nil as described above, otherwise it is ignored.

process-send returns true if it put the object in the mailbox of the process and false otherwise. The latter can happen either because the process is dead, or because the process's mailbox is full and reached the size specified by limit and timeout is non-nil.

See also

general-handle-event
mailbox-send
mailbox-send-limited
process-wait-for-event
19.6.3 Communication between processes and synchronization


LispWorks® User Guide and Reference Manual - 01 Dec 2021 19:30:51