Access to hash tables and non-simple arrays can be improved where they are known to be accessed in a single thread context. That is, only thread at the same time accesses them.
The
make-hash-table
argument
single-thread
tells
make-hash-table
that the table is going to be used only in single thread context, and therefore does not need to be thread-safe. Such a table allows faster access.
Similarly the
make-array
argument
single-thread
creates an array that is single threaded. Currently, the main effect of
single-thread
is on the speed of
vector-pop
,
vector-push
. and
vector-push-extend
on non-simple vectors. These operations are much faster on "single threaded" vectors, typically more than twice as fast as "multi-threaded" vectors.
You can also make an array be "single-threaded" with set-array-single-thread-p.
The result of parallel access to a "single-threaded" vector is unpredictable.