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