SML/NJ with mutual exclusion primitives similar to those in Modula-2+ and Mesa. Written by Greg Morrisett <email@example.com>.
Lightweight threads are created using fork. They are pre-emptively scheduled and communicate via shared memory which can be protected by a "mutex" (monitor).
Implementations for Motorola 68020, SPARC and MIPS and VAX- and MIPS-based multiprocessors.
["Adding Threads to Standard ML", E. Cooper et al, CMU-CS-90-186, CMU Dec 1990].