Warning: the threads library is deprecated since version 4.08.0 of OCaml. Please switch to system threads, which have the same API. Lightweight threads with VM-level scheduling are provided by third-party libraries such as Lwt, but with a different API.
The threads library allows concurrent programming in OCaml. It provides multiple threads of control (also called lightweight processes) that execute concurrently in the same memory space. Threads communicate by in-place modification of shared data structures, or by sending and receiving data on communication channels.
The threads library is implemented by time-sharing on a single processor. It will not take advantage of multi-processor machines. Using this library will therefore never make programs run faster. However, many programs are easier to write when structured as several communicating processes.
Two implementations of the threads library are available, depending on the capabilities of the operating system:
Programs that use system threads must be linked as follows:
ocamlc -I +threads other options unix.cma threads.cma other files ocamlopt -I +threads other options unix.cmxa threads.cmxa other files
Compilation units that use the threads library must also be compiled with the -I +threads option (see chapter 9).
Programs that use VM-level threads must be compiled with the -vmthread option to ocamlc (see chapter 9), and be linked as follows:
ocamlc -vmthread other options threads.cma other files
Compilation units that use threads library must also be compiled with the -vmthread option (see chapter 9).