自旋锁spinlock

    xiaoxiao2021-12-12  6

    1、自旋锁spinlock

    自旋锁广泛应用于多处理器多线程场景中,线程通过busy-wait-loop的方式获取锁,在任一时刻,只有一个线程可以获得锁,其他线程需要忙等待直到获得锁。通常情况下,要求spinlock的临界区尽量简短,且临界区中不能有显示或隐式的系统调用。

    2、与mutex的对比

    spinlock不会导致线程的状态发生切换(用户态->内核态);mutex获取不到锁时会选择sleep。

    mutex获取锁分为两个阶段,第一阶段在用户态采用spinlock锁总线的方式获取一次锁,如果成功获得锁则立即返回;否则进入第二阶段,调用系统的futex锁sleep,当锁可用后被唤醒,继续竞争锁。

    spinlock优缺点:

    spinlock没有昂贵的系统调用,执行速度快;但是自旋锁一直占用CPU,且在执行过程中会锁bus总线,锁总线时其他处理器无法使用总线。

    mutex优缺点:

    mutex不会忙等,得不到锁时会sleep;但是sleep时会陷入内核态。

    点击打开链接

    转载请注明原文地址: https://ju.6miu.com/read-900234.html

    最新回复(0)