A second reason for the need for multi-threading is that systems with two or more processors are becoming more affordable and there is thus a need for software that allows experimentation with how to take advantage of this hardware in statistical computing.
A question that needs to be resolved is what synchronization mechanisms should be provided. For performance reasons there may be a need to provide low level primitives such as mutexes at least at the C level. But it may be advisable to use a higher level mechanism in the high-level language level. One possible approach is to follow the example of the Limbo [3] language and base synchronization on the channels mechanism from the communicating sequential processes (CSP) approach to parallel computing.