module Semaphore:sig
..end
信号量
信号量是一种线程同步机制,可用于控制对共享资源的访问。
提供了两种类型的信号量:计数信号量和二元信号量。
计数信号量是一个计数器,可以被多个线程并发访问。其典型用法是通过统计可用资源的单位数来同步资源的生产者和消费者。
信号量的两个基本操作是
module Counting:sig
..end
二元信号量是计数信号量的变体,其中信号量只能取两个值,0 和 1。
二元信号量可以用来控制对单个共享资源的访问,其中值 1 表示“资源可用”,值 0 表示“资源不可用”。
二元信号量的“释放”操作将其值设置为 1,“获取”操作则等待直到值为 1,然后将其设置为 0。
当互斥锁规则(必须由锁定互斥锁的线程解锁)过于严格时,可以使用二元信号量代替互斥锁(参见模块 Mutex
)。“获取”操作对应于锁定互斥锁,“释放”操作对应于解锁互斥锁,但“释放”操作可以在与执行“获取”操作不同的线程中执行。同样,释放一个已经可用的二元信号量也是安全的。
module Binary:sig
..end