11.2.4 Buffered Asynchronous Channels
See also Thread Mailboxes.
An asynchronous channel is like a channel, but it buffers
values so that a send operation does not wait on a receive operation.
In addition to its use with procedures that are specific to
asynchronous channels, an asynchronous channel can be used as a
synchronizable event (see Events). An asynchronous
channel is ready for synchronization when
async-channel-get would not block; the asynchronous channel’s
synchronization result is the same as the
Returns #t if v is an asynchronous channel,
Returns an asynchronous channel with a buffer limit of limit
items. A get operation blocks when the channel is empty, and a put
operation blocks when the channel has limit items already.
If limit is #f, the channel buffer has no limit (so
a put never blocks).
Blocks until at least one value is available in ach, and then
returns the first of the values that were put into
If at least one value is immediately available in ach,
returns the first of the values that were put into ach. If
async-channel is empty, the result is #f.
Puts v into ach, blocking if ach’s buffer
is full until space is available.