第 34 章 线程库

threads 库允许在 OCaml 中进行并发编程。它提供了多个控制线程(也称为轻量级进程),这些线程在同一个内存空间中并发执行。线程通过对共享数据结构的原地修改进行通信,或者通过在通信通道上发送和接收数据进行通信。

threads 库是在操作系统提供的线程机制之上实现的:POSIX 1003.1c 线程用于 Linux、MacOS 和其他类 Unix 系统;Win32 线程用于 Windows。在特定域上,一次只能运行一个线程执行 OCaml 代码 ‍9.5.1。因此,并行机会仅限于运行系统或 C 库代码的程序部分。但是,线程提供并发,可用于将程序构建为多个通信进程。线程还有效地支持并发、重叠的 I/O 操作。

使用线程的程序必须按如下方式链接

        ocamlc -I +unix -I +threads other options unix.cma threads.cma other files
        ocamlopt -I +unix -I +threads other options unix.cmxa threads.cmxa other files

使用 threads 库的编译单元还必须使用 -I +threads 选项编译(参见第 ‍13 章)。