首页天道酬勤boost无锁队列,队列解决并发安全

boost无锁队列,队列解决并发安全

张世龙 05-04 18:13 92次浏览

高合并(14 )-CLH队列锁定简介什么是CLH队列锁定CLH原理

前言

上一篇文章介绍了并发的显式锁定和内置锁定,但今天我们将介绍CLH队列锁定

CLH队列锁定CLH锁定是指Craig、Landin和andHagersten(CLH )

CLH锁定也是基于链表的可扩展性、高性能、公平的自旋锁定,线程只需要本地自旋,研究前驱节点的状态,在前驱节点解锁后结束自旋。

CLH的原理是CLH是基于链表的自旋锁,因此CLH也是链表。

如果线程需要获取锁定,则会创建新的QNode。 将QNode的locked设置为true以标识要获取锁定,调用tail的getAndSet方法以在队列末尾获取对前体节点的myPred。 然后,使前驱节点的锁定自旋,直到前驱节点的锁定被解除(锁定为假)

线程解锁时,将当前节点的锁定设置为false并回收前一个节点。 此时,节点在旋转时检测到前驱节点解锁,并获取锁定。

aqs核心原理,原理的概念