Linux 添加到无锁列表的尾部
我使用的是Linux 添加到无锁列表的尾部,linux,algorithm,linked-list,linux-kernel,lockless,Linux,Algorithm,Linked List,Linux Kernel,Lockless,我使用的是llist.h中定义的Linux内核的无锁列表llist\u add添加到列表中,但它会在头部之后添加新节点。如何在固定时间内添加到列表尾部 如何在固定时间内添加到列表尾部 你不能 llist的无锁属性是以减少功能为代价的:只支持在开头添加、删除第一个元素和删除所有元素。即使这种减少也不足以使其始终无锁,请参见标题开头的说明 实际上,一些对象的无锁属性很少是必需的。在大多数情况下,自旋锁的使用是可以接受的。如果是您的情况,您可以使用由旋转锁保护的双链接列表,而不是无锁的llist。双链
llist.h
中定义的Linux内核的无锁列表llist\u add
添加到列表中,但它会在头部之后添加新节点。如何在固定时间内添加到列表尾部
如何在固定时间内添加到列表尾部
你不能
llist
的无锁属性是以减少功能为代价的:只支持在开头添加、删除第一个元素和删除所有元素。即使这种减少也不足以使其始终无锁,请参见标题开头的说明
实际上,一些对象的无锁属性很少是必需的。在大多数情况下,自旋锁的使用是可以接受的。如果是您的情况,您可以使用由旋转锁保护的双链接列表,而不是无锁的llist
。双链接列表存储指向最后一个元素的指针,并支持在其之后添加(函数list\u add\u tail
)
如何在固定时间内添加到列表尾部
你不能
llist
的无锁属性是以减少功能为代价的:只支持在开头添加、删除第一个元素和删除所有元素。即使这种减少也不足以使其始终无锁,请参见标题开头的说明
实际上,一些对象的无锁属性很少是必需的。在大多数情况下,自旋锁的使用是可以接受的。如果是您的情况,您可以使用由旋转锁保护的双链接列表,而不是无锁的
llist
。双链接列表存储指向最后一个元素的指针,并支持在其后面添加(函数list\u add\u tail
).我们目前正在使用带有list\u head
的旋转锁,但正在寻找消除/减少锁的方法。也许RCU可以帮助?我们目前正在使用带有list\u head
的旋转锁,但正在寻找消除/减少锁的方法。也许RCU可以帮助?