ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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

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(唤醒等待线程)。
计数器逻辑无显式计数器,仅通过 “锁定 / 解锁”
返回列表