【发布时间】:2016-05-21 23:26:54
【问题描述】:
所以我正在阅读 Maged M. Michael 和 Michael L. Scott 的文章 Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms,但有一个小问题我没有明白:
假设我们有两个并发线程,它们在队列初始化后立即被触发。其中一个线程调用enqueue,另一个调用dequeue。是什么阻止他们同时访问虚拟节点的next 字段? dequeue 线程不能读取next 字段而enqueue 线程写入它吗?他们都使用不同的锁......所以我不明白它们之间的同步......
谢谢。
【问题讨论】:
-
你指的是哪个虚拟节点?
-
在initialize()中创建的那个
-
我猜你指的是在初始化中创建的第一个节点?
-
是的,我指的是那个
标签: c++ multithreading concurrency synchronization locking