# Threads
The threads library `(import (threads))` provides threading primitives.
## Values and threads
All values in scheme-rs are safe to send across threads and all mutations are
atomic.
## `spawn` _procedure_
```scheme
(spawn thunk)
```
Invokes `thunk` in a newly created thread and returns a [join handle](#join-handle).
## `join` _procedure_
```scheme
(join join-handle)
```
Takes a [join handle](#join-handle) and blocks until the thread returns,
returning the values. After the thread has returned, the same values will be
returned on subsequent calls.
If the thread throws an exception, `join` will re-throw the same exception each
time it is called.