侧边栏壁纸
  • 累计撰写 73 篇文章
  • 累计创建 14 个标签
  • 累计收到 1 条评论

自旋锁和互斥锁

秋山人家
2019-07-26 / 0 评论 / 0 点赞 / 1,718 阅读 / 0 字
温馨提示:
本文最后更新于 2019-07-26,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

自旋锁和互斥锁

  • 自旋锁和互斥锁一样,都是为了解决对某种资源的互斥访问。

  • 自旋锁和互斥锁的区别: 自旋锁:如果资源已经被占用,调用线程不会进入休眠(一直处于激活状态),而是在循环等待,直到获取到被占用资源。 互斥锁:如果资源已经被占用,调用线程进入休眠状态,获取到锁的时候需要从内核态恢复,需要线程上下文切换。

  • 自旋锁不会使线程状态发生切换,一直处于用户态,即线程一直都是active的;不会使线程进入阻塞状态,减少了不必要的上下文切换,执行速度快 非自旋锁在获取不到锁的时候会进入阻塞状态,从而进入内核态,当获取到锁的时候需要从内核态恢复,需要线程上下文切换。 (线程被阻塞后便进入内核(Linux)调度状态,这个会导致系统在用户态与内核态之间来回切换,严重影响锁的性能)

  • 可重入自旋锁和不可重入自旋锁

0

评论区