- 将调用pthread_cond_wait函数的执行流放到PCB等待队列当中
- 解互斥锁
- 等待被唤醒
- 假设被唤醒之后,应该怎么做?
- 从PCB等待队列当中移除出来
- 抢占互斥锁
情况一:拿到互斥锁,pthread_cond_wait函数就返回了
情况二:没有抢到互斥锁,阻塞在pthread_cond_wait函数内部的抢锁逻辑当中
一定要知道,当卡在pthread_cond_wait 内部抢锁逻辑的执行流一旦时间片耗尽,意味着当前线程被切换出来,程序计数器当中保存的就是抢锁的指令,上下文信息当中保存的就是寄存器当中的值
当再次拥有PCB时间片之后,从程序计数器和上下文信息当中恢复抢锁的逻辑
知道抢锁成功,pthread_ cond_wait函数才返回