本帖最后由 forgot 于 2024-1-9 12:56 编辑
互斥量表现互斥现象的数据结构,也被看成二元信号灯。一个互斥基本上是一个多任务敏感的二元信号,它能用做同步多任务的行为,它经常使用做保护从中断来的临界段代码而且在共享同步使用的资源。
Mutex 本质上说就是一把锁,提供对资源的独占访问,因此Mutex主要的做用是用于互斥。Mutex对象的值,只有0和1两个值。这两个值也分别表明了 Mutex的两种状态。值为0, 表示锁定状态,当前对象被锁定,用户进程/线程若是试图Lock临界资源,则进入排队等待;值为1,表示空闲状态,当前对象为空闲,用户进程/线程能够 Lock临界资源,以后Mutex值减1变为0。并发
Mutex能够被抽象为四个操做:
- 建立 Createpost
- 加锁 Lockui
- 解锁 Unlockspa
- 销毁 Destroy操作系统
Mutex被建立时能够有初始值,表示Mutex被建立后,是锁定状态仍是空闲状态。在同一个线程中,为了防止死锁,系统不容许连续两次对Mutex加锁(系统通常会在第二次调用马上返回)。也就是说,加锁和解锁这两个对应的操做,须要在同一个线程中完成。
|