Type: concept
Confidence: 0.85
Created: 2026-04-26
Updated: 2026-04-26
Tags: concurrencysynchronizationoperating-systemscomputer-science计算理论

信号量

概述

信号量(Semaphore)是由荷兰计算机科学家Edsger W. Dijkstra发明的一种同步原语,用于解决并发编程中的同步和互斥问题。信号量通过计数器和等待/通知机制协调多个进程或线程对共享资源的访问。

关键内容

  1. 基本操作:信号量有两个原子操作:P操作(荷兰语Probeer,意为"尝试",也称wait)和V操作(荷兰语Verhoog,意为"增加",也称signal)。P操作减少信号量计数器,若计数器小于0则阻塞进程;V操作增加计数器并唤醒等待进程。

  2. 应用类型:分为二进制信号量(Binary Semaphore,取值0或1,用于互斥访问)和计数信号量(Counting Semaphore,取值为任意非负整数,用于资源计数)。

  3. 使用场景:广泛应用于操作系统、多线程编程中,用于解决临界区问题、生产者-消费者问题、读者-写者问题等经典的并发同步问题。

  4. 重要性:信号量是并发编程的基础概念之一,为后续的锁、条件变量等同步机制奠定了理论基础。

来源

相关