c++ - : non-blocking write, 假想的锁机制读取并失效

标签 c++ multithreading lock-free

这是场景。鲍勃是一名作家,爱丽丝是一名读者。鲍勃写东西,爱丽丝读它们。规则是:

1)无论Alice是否正在读取,Bob都可以写入(读取不会阻止写入)。

2) 当 Bob 写入时,Alice 无法读取(写入会阻塞读取)。

3)当Alice读完后,她可以知道Bob在她读的过程中是否写了内容(读者可以检测他们刚刚读到的数据是否无效)。

2) 和 3) 实际上是一个组合规则,但我列出了两个以便进行良好的讨论。这个问题可以通过一个互斥锁和一个计数器(版本号)来解决,但我不知道的是,上面是一个众所周知的场景,有一个常用的名称吗?有研究过吗?

最佳答案

Which I do not know is, is the problem a well-know scenario named by terms?

是的,它叫做Seqlock: https://en.wikipedia.org/wiki/Seqlock

Does anyone study at it or I am just making a wheel?

据我所知有多种实现(例如Linux内核)和论文。

关于c++ - : non-blocking write, 假想的锁机制读取并失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44325726/

相关文章:

c++ - 透视投影和 View 矩阵 : Both depth buffer and triangle face orientation are reversed in OpenGL

c++ - 处理 <file.exe> 时 VS 2012 调试意外的符号读取器错误

Java 多线程大写字符串

c# - 在后台线程中监听事件

c++ - std::atomic 是如何实现的

c++ - 拆分引用计数如何在无锁堆栈中工作?

c++ - 更改迭代器比较时 vector 迭代器不可取消引用

c++ - 查找集合的所有子集

java - 使用按钮停止 for 循环

c++ - 为什么std::atomic <T>::is_lock_free()和constexpr一样不是静态的?