躺平程序猿 2021-11-15 19:48 采纳率: 0%
浏览 31

咨询个有关自旋锁和互斥锁的问题?

咨询个有关自旋锁和互斥锁的问题:
自旋锁获取不到锁的时候线程会一直自旋消耗掉当前线程持有的CPU时间片;互斥锁获取不到锁的时候线程会主动交出CPU时间片,并添加到当前锁的等待队列里,等持有锁的线程临界区代码执行完毕后被唤醒。自旋锁相对于互斥锁来说白白消耗了CPU的时间片而且会导致"优先级反转"问题,为什么还将自旋锁定义为轻量级锁呢?还有个问题互斥锁进行线程唤醒时是唤醒等待队列中全部线程还是唤醒第一个线程?

  • 写回答

2条回答 默认 最新

  • 七号公园的忧伤 新星创作者: Java技术领域 2021-11-15 20:18
    关注

    1.自旋锁的使用,是因为大部分情况下,等待时间是很少的,为了避免系统的cpu调度造成浪费,直接在用户层面代码就完成了。如果占用锁的时间过长,就得不偿失了。
    2.唤醒那个得看什么语言吧

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月15日