mutex

作者: 黑魔术师 | 来源:发表于2018-05-14 20:59 被阅读10次

    1.锁的意义是什么
    http://blog.jobbole.com/106582/

    2.信号量,互斥量
    信号量 wait signal
    https://www.zhihu.com/question/39850927

    3.互斥锁,自旋锁,读写锁, Peterson锁
    http://blog.jobbole.com/106582/
    http://blog.jobbole.com/106981/

    4.进程间通信(Inter Process Communication, IPC)中的静态条件

    5.操作系统层级的锁
    cas原子操作

    6.竞态条件,竞态资源,轮询忙等,锁变量,原子性,TSL,阻塞,睡眠,唤醒,管程

    7.golang实现
    mutex底层有一个state和一个sema组成。
    1.通过cas先比较和设置state,如果上锁成功,则lock成功,否则进入循环上锁的阶段。
    2.循环开始先通过位运算判断状态中 lock为1且starving不为1时,且允许自旋时,进入自旋状态。
    3.自旋中给state打上woke标记,如果成功,说明在这个时间片内把state打上了一个意向锁。
    4.后续经过判断后上一把实际的锁,如果没有上锁成功加入sema的队列中。在unlock时如果sema队列中有任务则进行唤醒。
    5.在信号量的入队列操作时,还实现了一把简化的锁,还进行了等待等操作。
    6.通过golink把具体的实现映射到runtime包中,可以便捷的进行协程的控制和调度。

    相关文章

      网友评论

          本文标题:mutex

          本文链接:https://www.haomeiwen.com/subject/chlrdftx.html