> You have a set of threads .. how is the one to execute determined? Up to the user. See http://mlton.org/MLtonThread MLton.Thread does not include a default scheduling mechanism, but it can be used to implement both preemptive and non-preemptive threads.