有没有多读多写的无锁队列(FIFO)算法

[复制链接]
查看11 | 回复10 | 2021-1-27 06:13:19 | 显示全部楼层 |阅读模式
最近研究无锁算法,看得最多的是ms-queue,请问有没有multireadermultiwriterlock-freeringbuf的算法。
相当于一个数值,有多个读写者,要求无锁、不阻塞的访问此数值(出队或入队)。
谢谢。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:13:19 | 显示全部楼层
更正下,上面的“数值”是“数组”
回复

使用道具 举报

千问 | 2021-1-27 06:13:19 | 显示全部楼层
求高人啊aaaaaaaaaaaaaaaaaaaaaaaaaaaa
回复

使用道具 举报

千问 | 2021-1-27 06:13:19 | 显示全部楼层
看来只能靠自己了
回复

使用道具 举报

千问 | 2021-1-27 06:13:19 | 显示全部楼层
楼主,多个进程/线程共享一个对象,要对之实施"写"操作,必须要加锁,这是操作系统的基本概念.不要白费心思地找什么"无锁算法"
回复

使用道具 举报

千问 | 2021-1-27 06:13:19 | 显示全部楼层
就不存在所谓的这种无锁算法,楼主概念上……
加锁就是为了并发访问时防止意外发生,不加锁如何同步?
回复

使用道具 举报

千问 | 2021-1-27 06:13:19 | 显示全部楼层
楼主想其他办法或者提高并发访问效率才是正道!


回复

使用道具 举报

千问 | 2021-1-27 06:13:19 | 显示全部楼层
单线程的主动获取模式?
回复

使用道具 举报

千问 | 2021-1-27 06:13:19 | 显示全部楼层
“就不存在所谓的这种无锁算法”
--------------请看
《Java理论与实践:非阻塞算法简介》
http://www.ibm.com/developerworks/cn/java/j-jtp04186/
《用于并行计算的多线程数据结构,第2部分:设计不使用互斥锁的并发数据结构》
http://www.ibm.com/developerworks/cn/aix/library/au-multithreaded_structures2/

回复

使用道具 举报

千问 | 2021-1-27 06:13:19 | 显示全部楼层
引用8楼narwal的回复:“就不存在所谓的这种无锁算法”
--------------请看
《Java理论与实践:非阻塞算法简介》
http://www.ibm.com/developerworks/cn/java/j-jtp04186/
《用于并行计算的多线程数据结构,第2部分:设计不使用互斥锁的并发数据结构》
http://www.ibm.com/developerworks/cn/aix/libr……

写C++的唯一标识的时候用过类似的方法
#pragmaonce
#include"pub.sys.h"
namespaceshowjim{namespacesys{namespacecommon
{
template
classidentity
{
private:
valueTypevalue;
public:
identity(valueTypevalue=0):value(value)
{
}
valueTypenext()
{
valueTypenewValue=value++;
while(++newValue!=value)newValue=value++;
returnnewValue;
}
conststaticidentitydefaultIdentity;
};
}}}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行