concurrent.el API¶
Generator¶
-
Function
cc:generator
callback &rest body¶ Create a generator object. If BODY has
`yield'
symbols, it means calling callback function CALLBACK.
Semaphore¶
-
Function
cc:semaphore-create
permits-num¶ Return a semaphore object with PERMITS-NUM permissions.
-
Function
cc:semaphore-acquire
semaphore¶ Acquire an execution permission and return deferred object to chain. If this semaphore object has permissions, the subsequent deferred task is executed immediately. If this semaphore object has no permissions, the subsequent deferred task is blocked. After the permission is returned, the task is executed.
-
Function
cc:semaphore-release
semaphore¶ Release an execution permission. The programmer is responsible to return the permissions.
-
Function
cc:semaphore-with
semaphore body-func &optional error-func¶ Execute the task BODY-FUNC asynchronously with the semaphore block.
-
Function
cc:semaphore-release-all
semaphore¶ Release all permissions for resetting the semaphore object. If the semaphore object has some blocked tasks, this function return a list of the tasks and clear the list of the blocked tasks in the semaphore object.
-
Function
cc:semaphore-interrupt-all
semaphore¶ Clear the list of the blocked tasks in the semaphore and return a deferred object to chain. This function is used for the interruption cases.
Signal¶
-
Function
cc:signal-channel
&optional name parent-channel¶ Create a channel. NAME is a channel name for debug. PARENT-CHANNEL is an upstream channel. The observers of this channel can receive the upstream signals. In the case of using the function
`cc:signal-send'
, the observers of the upstream channel can not receive the signals of this channel. The function`cc:signal-send-global'
can send a signal to the upstream channels from the downstream channels.
-
Function
cc:signal-connect
channel event-sym &optional callback¶ Append an observer for EVENT-SYM of CHANNEL and return a deferred object. If EVENT-SYM is
`t'
, the observer receives all signals of the channel. If CALLBACK function is given, the deferred object executes the CALLBACK function asynchronously. One can connect subsequent tasks to the returned deferred object.
-
Function
cc:signal-send
channel event-sym &rest args¶ Send a signal to CHANNEL. If ARGS values are given, observers can get the values by following code: (lambda (event) (destructuring-bind (event-sym (args)) event ... )).
-
Function
cc:signal-send-global
channel event-sym &rest args¶ Send a signal to the most upstream channel.
-
Function
cc:signal-disconnect
channel deferred¶ Remove the observer object DEFERRED from CHANNEL and return the removed deferred object.
-
Function
cc:signal-disconnect-all
channel¶ Remove all observers.
Dataflow¶
-
Function
cc:dataflow-environment
&optional parent-env test-func channel¶ Create a dataflow environment. PARENT-ENV is the default environment. If this environment doesn't have the entry A and the parent one has the entry A, this environment can return the entry A. One can override the entry, setting another entry A to this environment. TEST-FUNC is a test function that compares the entry keys. The default function is
`equal'
. CHANNEL is a channel object that sends signals of variable events. Observers can receive following signals: ``get-first`` the fist referrer is waiting for binding ``get-waiting`` another referrer is waiting for binding ``set`` a value is bound ``get`` returned a bound value ``clear`` cleared one entry ``clear-all`` cleared all entries
-
Function
cc:dataflow-get
df key¶ Return a deferred object that can refer the value which is indicated by KEY. If DF has the entry that bound value, the subsequent deferred task is executed immediately. If not, the task is deferred till a value is bound.
-
Function
cc:dataflow-get-sync
df key¶ Return the value which is indicated by KEY synchronously. If the environment DF doesn't have an entry of KEY, this function returns nil.
-
Function
cc:dataflow-set
df key value¶ Bind the VALUE to KEY in the environment DF. If DF already has the bound entry of KEY, this function throws an error signal. VALUE can be nil as a value.
-
Function
cc:dataflow-clear
df key¶ Clear the entry which is indicated by KEY. This function does nothing for the waiting deferred objects.
-
Function
cc:dataflow-get-avalable-pairs
df¶ Return an available key-value alist in the environment DF and the parent ones.
-
Function
cc:dataflow-get-waiting-keys
df¶ Return a list of keys which have waiting deferred objects in the environment DF and the parent ones.
-
Function
cc:dataflow-clear-all
df¶ Clear all entries in the environment DF. This function does nothing for the waiting deferred objects.
-
Function
cc:dataflow-connect
df event-sym &optional callback¶ Append an observer for EVENT-SYM of the channel of DF and return a deferred object. See the docstring of
`cc:dataflow-environment'
for details.