无锁有序链表的实现
无锁有序链表可以保证元素的唯一性,使其可用于哈希表的桶,甚至直接作为一个效率不那么高的map。普通链表的无锁实现相对简单点,因为插入元素可以在表头插,而有序链表的插入则是任意位置。 本文主要基于论文High Performance Dynamic Lock-Free Hash Tables实现。 主要问题 链表的主要操作包含insert和remove,先简单实现一个版本,就会看到问题所在,以下代码只用作示例: struct node_t { key_t key; value_t val; nod…