【Linux】条件变量等待的内部实现逻辑
发布日期:2021-05-10 06:33:36 浏览次数:19 分类:技术文章

本文共 325 字,大约阅读时间需要 1 分钟。

  • 将调用pthread_cond_wait函数的执行流放到PCB等待队列当中
  • 解互斥锁
  • 等待被唤醒
     
  • 假设被唤醒之后,应该怎么做?
  • 从PCB等待队列当中移除出来
  • 抢占互斥锁
    情况一:拿到互斥锁,pthread_cond_wait函数就返回了
    情况二:没有抢到互斥锁,阻塞在pthread_cond_wait函数内部的抢锁逻辑当中

一定要知道,当卡在pthread_cond_wait 内部抢锁逻辑的执行流一旦时间片耗尽,意味着当前线程被切换出来,程序计数器当中保存的就是抢锁的指令,上下文信息当中保存的就是寄存器当中的值

当再次拥有PCB时间片之后,从程序计数器和上下文信息当中恢复抢锁的逻辑
知道抢锁成功,pthread_ cond_wait函数才返回

转载地址:https://blog.csdn.net/weixin_43967449/article/details/110194067 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【Linux】线程安全问题
下一篇:【Linux】为什么会有互斥锁?

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年07月17日 09时52分02秒