专注于快乐的事情

CLH

CLH

CLH(Craig, Landin, and Hagersten)锁,简单的说,它使用队列的方式来解决n个线程来争夺m把锁的问题,每当一个新的线程需要获取锁,为其创建一个节点并放到队尾,如果该线程是队列中的第一个节点,则节点的locked设置成false,如果它不是队列的第一个节点,则它的节点的prev指向原来的队尾节点,并不断自旋查看prev指向节点的locked属性,如果该值变为false,表示轮到它来尝试获取锁了,如果获取成功并最终用完释放后,则将自己的locked设置成false,如果获取失败,locked值不变,还是true,并不断尝试获取锁。

MSC也是可扩展、高性能的自旋锁,它和CLH不同的是,它是对自己节点的locked属性进行自旋,这意味着prev节点释放锁后,需要去主动改变它的后继next节点的locked的状态。

评论系统未开启,无法评论!