uniq:无锁(多读取器多写入器)循环缓冲队列

时间:2021-03-31 14:45:38
【文件属性】:
文件名称:uniq:无锁(多读取器多写入器)循环缓冲队列
文件大小:112KB
文件格式:ZIP
更新时间:2021-03-31 14:45:38
thread lock-free thread-consensus C++ 无锁 在有关无锁队列的,最受支持的答案(jan / 20)是: 在过去的几年中,我对无锁数据结构进行了专门的研究。 我已经阅读了该领域的大多数论文(大约只有40篇,尽管只有10篇或15篇才是真正的用途:-) AFAIK,尚未发明无锁循环缓冲区。 在有人说: 无锁队列是独角兽。 在搜索文献时,我们发现没有更多令人鼓舞的词:《 》一书断言,建立免等待队列是不可能的: 推论5.4.1。 从一组原子寄存器构造一个队列,堆栈,优先级队列,集合或列表的免等待实现是不可能的。 尽管FIFO队列可解决两线程共识,但它们无法解决三线程共识。 (第107页) 发现 经过多年的研究和大量测试,我终于放弃了针对该问题的最低限度的解决方案,我敢肯定它是无需等待的。 我相信这是有史以来最小/最简单的解决方案。 在本文/资料库中,我竭尽所能,仅带出对问题及其解决方案的理解所必需的内容。 专注于真正重要的
【文件预览】:
uniq-master
----.gitignore(342B)
----cpp()
--------buildtest.sh(37B)
--------bin()
--------doc()
--------libs()
--------sandbox()
--------tests()
--------lib()
--------.vscode()
--------helloGL2.cpp(10KB)
----LICENSE(34KB)
----js()
--------consumer.js(488B)
--------test0.js(3KB)
--------test.js(872B)
--------inbrowser()
--------uniq.js(2KB)
--------producer.js(571B)
----doc()
--------states.md(667B)
----c()
--------nutshell.c(438B)
----README.md(8KB)
----sandbox()
--------hello.cpp(2KB)
--------build(95B)
--------nutshell.cpp(828B)
--------README.md(73B)
----csharp()
--------build.bat(18B)
--------Test.cs(1KB)
--------build.sh(36B)
--------UniQ.cs(1KB)
----benchmarks()
--------final.cpp(2KB)
--------testqueue.depend(156B)
--------testqueue.cbp(1KB)
--------main.cpp(8KB)
--------main_bench.cpp(5KB)
--------testqueue.layout(242B)
----pascal()
--------thrds.pas(8KB)
--------sets.pas(1KB)
--------queuetest.pas(2KB)
--------uniq.pas(2KB)
--------fncs.pas(2KB)
--------utils.pas(5KB)
--------main.pas(2KB)
--------QueueTests.dpr(1KB)

网友评论