ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Linux的互斥锁、Linux的POSIX信号量(二值、计数)、RTOS的二值信号量

2026/9/29 6:55:43 拓冰建站 浏览量
Linux的互斥锁、Linux的POSIX信号量(二值、计数)、RTOS的二值信号量

        锁和信号量最大的区别就是:锁严格要求 “谁占用谁释放”,而信号量允许 “一个任务 / 线程释放,另一个任务 / 线程获取”。

特性互斥锁(Mutex)POSIX 信号量(Semaphore)
初始状态初始为 “锁定”(PTHREAD_MUTEX_INITIALIZER),需显式获取(pthread_mutex_lock)。初始值可自定义:
- 用于互斥时初始值为 1(二进制信号量);
- 用于限制资源数量时初始值为 N(如 3 表示 3 个资源)。
核心操作- pthread_mutex_lock:获取锁(若已被占用则阻塞);
- pthread_mutex_unlock:释放锁(仅持有者可调用)。
- sem_wait:计数器减 1(若为 0 则阻塞);
- sem_post:计数器加 1(唤醒等待线程)。
计数器逻辑无显式计数器,仅通过 “锁定 / 解锁”