Sends an object to the mailbox of a given process.
mp
process-send process object &key change-priority limit timeout error-if-dead-p => success
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. |
success |
A boolean. |
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:
t
— set the priority to the interactive priority.:default
— set the priority to the normal running priority.
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.
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