Threads can be created and waited for. A thread cannot be exited directly, but the current thread can be exited implicitly, and other threads can be signaled.
Create a new thread of execution which invokes function. When function returns, the thread exits.
The new thread is created with no local variable bindings in effect. The new thread’s current buffer is inherited from the current thread.
name can be supplied to give a name to the thread. The name is used for debugging and informational purposes only; it has no meaning to Emacs. If name is provided, it must be a string.
This function returns the new thread.
This function returns t
if object represents an Emacs
thread, nil
otherwise.
Block until thread exits, or until the current thread is signaled. It returns the result of the thread function. If thread has already exited, this returns immediately.
Like signal
(see How to Signal an Error), but the signal is
delivered in the thread thread. If thread is the current
thread, then this just calls signal
immediately. Otherwise,
thread will receive the signal as soon as it becomes current.
If thread was blocked by a call to mutex-lock
,
condition-wait
, or thread-join
; thread-signal
will unblock it.
If thread is the main thread, the signal is not propagated there. Instead, it is shown as message in the main thread.
Yield execution to the next runnable thread.
Return the name of thread, as specified to make-thread
.
Return t
if thread is alive, or nil
if it is not.
A thread is alive as long as its function is still executing.
Return the object that thread is waiting on. This function is primarily intended for debugging, and is given a “double hyphen” name to indicate that.
If thread is blocked in thread-join
, this returns the
thread for which it is waiting.
If thread is blocked in mutex-lock
, this returns the mutex.
If thread is blocked in condition-wait
, this returns the
condition variable.
Otherwise, this returns nil
.
Return the current thread.
Return a list of all the live thread objects. A new list is returned by each invocation.
This variable keeps the main thread Emacs is running, or nil
if
Emacs is compiled without thread support.
When code run by a thread signals an error that is unhandled, the thread exits. Other threads can access the error form which caused the thread to exit using the following function.
This function returns the last error form recorded when a thread
exited due to an error. Each thread that exits abnormally overwrites
the form stored by the previous thread’s error with a new value, so
only the last one can be accessed. If cleanup is
non-nil
, the stored form is reset to nil
.