7 Managing OS-Level Threads
Chez Scheme functionality can only be accessed from OS-level threads
that are known to the Chez Scheme runtime system. Otherwise, there’s a
race condition between such an access and a garbage collection that is
triggered by other threads.
A thread not created by Chez Scheme can be made known to the runtime
system by activating it with Sactivate_thread. As long as a
thread is active by not running Chez Scheme code, the thread prevents
garbage collection in all other running threads. Deactivate a thread
using Sdeactivate_thread. When a deactivated thread
Activates the current OS-level thread. An already-activated thread can
be activated again, but each activating must be balanced by a
decativation. The result is 0 if the thread was previously
activated 1 otherwise.
Deactivates the current OS-level thread—or, at least, balances on
activation, making the thread deactive if there are no remaining
activations to balance with deactivation.
Releases any Chez Scheme resources associated with the current OS
thread, which must have been previously activated by which must not be