Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 添加到无锁列表的尾部_Linux_Algorithm_Linked List_Linux Kernel_Lockless - Fatal编程技术网

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可以帮助?