⭐️セマフォ(Semaphore)

mutexに似た並行制御の仕組み。「今いくつ空いているか」を表すカウンターで同時アクセス数を制御する。

Mutexセマフォ
同時アクセス数1つだけN個まで(指定可能)
イメージトイレの個室(1人用)の鍵駐車場(N台分)の空き管理
 ◆ Mutex(同時に1つだけ)

  ┌─────┐
  │ 🚽  │ ← 個室は1つだけ
  └──┬──┘
     │
  🧑 使用中(🔒)
  🧑 待ち…
  🧑 待ち…


 ◆ セマフォ(同時にN個まで)  ※ 例: N=3

  ┌─────┐ ┌─────┐ ┌─────┐
  │ 🅿️  │ │ 🅿️  │ │ 🅿️  │  ← 3台分の駐車スペース
  └──┬──┘ └──┬──┘ └──┬──┘
     │       │       │
  🚗 駐車中 🚗 駐車中 🚗 駐車中  (カウンター: 0/3 空き)
  🚗 待ち…                        (満車なので待機)
  🚗 待ち…

使用例:コネクションプール、APIのレートリミットなど。

上限が1のセマフォは「バイナリセマフォ」と呼ばれ、mutexとほぼ同じになる。