Info Node: (guile.info)Higher level thread procedures
(guile.info)Higher level thread procedures
Higher level thread procedures
------------------------------
- primitive: call-with-new-thread thunk error-thunk
Evaluate `(thunk)' in a new thread, and new dynamic context,
returning a new thread object representing the thread.
If an error occurs during evaluation, call error-thunk, passing it
an error code describing the condition. [Error codes are currently
meaningless integers. In the future, real values will be
specified.] If this happens, the error-thunk is called outside
the scope of the new root - it is called in the same dynamic
context in which with-new-thread was evaluated, but not in the
callers thread.
All the evaluation rules for dynamic roots apply to threads.
- primitive: join-thread thread
Suspend execution of the calling thread until the target THREAD
terminates, unless the target THREAD has already terminated.
- primitive: yield
If one or more threads are waiting to execute, calling yield
forces an immediate context switch to one of them. Otherwise,
yield has no effect.
- primitive: make-mutex
Create a new mutex object.
- primitive: lock-mutex mutex
Lock MUTEX. If the mutex is already locked, the calling thread
blocks until the mutex becomes available. The function returns when
the calling thread owns the lock on MUTEX.
- primitive: unlock-mutex mutex
Unlocks MUTEX if the calling thread owns the lock on MUTEX.
Calling unlock-mutex on a mutex not owned by the current thread
results in undefined behaviour. Once a mutex has been unlocked,
one thread blocked on MUTEX is awakened and grabs the mutex lock.