Back to Blog

互斥锁Mutex与信号量Semaphore的区别

或者直接使用语言提供的互斥锁 API(如 std::mutexpthread_mutex_tstd::lock_guard 等)。


3. 计数信号量(Counting Semaphore)与 Mutex 的根本区别

3.1 计数器的意义

  • Semaphore:内部维护一个 计数器(count),可以被 显式增加(Signal)或 减少(Unsignal)。计数器的取值范围是 0 到 max_count,因此可以控制 并发访问的上限
  • Mutex:只有 0 与 1 两种状态,表示 已锁定未锁定。没有计数概念,也没有上限的概念。

原文代码(保持不变):