Here's a rough documentation of the current user interface for RScheme's threading system. Let me know if there are any problems, and I hope this helps. RScheme's threading system currently multiplexes a set of scheme level threads on top of a single kernel thread. Each scheme level thread is semi-preemptively multitasked with other ready threads.
Preemption can currently occur at any scheme-level function call or backward branch.
At the moment all threads use process blocking IO, so, for example, if you issue some command that results in a system level read, all threads will stop until that thread returns. In current versions of RScheme the threading system is not active when RScheme starts up. When a thread resumes, it can expect to have this much time unless it resumed because a friend handed off the remainder of it's time slice. The currently executing thread. Yield to some other thread.