请关注我的微信公众号

个人微信公众号
技术交流群 (仅作技术交流):642646237

请关注我的头条号:

如何实现线程安全的链表
多线程环境下向链表中安全插入节点的方法:
- 锁住整个链表。
- 使用交替锁。只锁住链表的一部分,链表没有被锁住的部分自由访问。

交替锁如何实现安全的链表
插入新的链表节点时,需要将待插入位置两边的节点加锁。
首先锁住链表的前两个节点。
如果这两节点之间不是待插入位置,那么就解锁第一个节点,并锁住第三个节点。
如果被锁住的两节点之间仍不是待插入位置,就解锁第二个节点,并锁住第四个节点。
以此类推,直到找到待插入位置并插入新的节点,最后解锁两边的节点。
交替锁实现安全的链表 代码




这种方案可以让多个线程并发地进行链表插入操作,还能让其他的链表操作安全地并发。
交替锁实现的链表可以并发地执行统计节点数操作

链表统计操作和插入操作是否违反“全局顺序”规则?
不违反!
size()
方法从不持有多把锁——其在某一时间并不持有一把以上的锁。
网友评论