软考笔记0820-1

信号量(Semaphore)访问互斥资源时的初始值取决于你想实现的同步目标:


1. 互斥锁(Mutex)场景

  • 访问的是单个资源,一次只能被一个线程/进程使用。

  • 对应的信号量初始值通常是 1

    • 1 表示资源可用。
    • 当一个线程获取资源时,信号量减 1 → 变为 0 → 其他线程必须等待。
    • 释放资源时,信号量加 1 → 变为 1。
初始值 = 1  (常用于互斥锁)

2. 计数信号量(Counting Semaphore)

  • 如果有 多个相同的资源(比如 5 个打印机),初始值设置为资源数量:

    • 初始值 = 资源总数
    • 每获取一个资源,信号量减 1;释放时加 1。
初始值 = 资源数量 N

总结

  • 互斥资源(一个资源) → 信号量初始值 = 1
  • 多个可用资源 → 信号量初始值 = 资源数量

posted @ 2025-08-20 21:19  学不会xuebuhui  阅读(10)  评论(0)    收藏  举报
Language: javascript //图片预览