如何安全地迭代一个互锁列表
How to safely iterate an interlocked slist?
线程之间共享的数据存储在一个互锁的单链表中。
https://msdn.microsoft.com/en-us/library/windows/desktop/ms684121 (v = vs.85) . aspx
我们知道list在初始化后不会改变,但是我们希望不同的线程能够迭代并读取list的内容。是否有一种安全的方法来读取/迭代列表?
当前代码使用InterlockedFlushSList从列表中取出节点,然后对数据进行临时复制,然后将节点放回列表中。如果列表在线程之间共享,就像是等待发生的竞争条件。
不只是去一个不同的线程安全结构是有一个安全的方式来读取迭代列表?
在多线程环境中读取任何列表都是安全的,只要列表在读取时没有被修改。你甚至不需要'interlocked' list
相关文章:
- 链表,将列表复制到另一个列表
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 我如何创建一个列表,然后从中创建两个列表,其中一个用于偶数,另一个用于奇数?
- 是否可以使用OpenMP并行化一个列表,该列表可以在每次迭代中添加新元素
- 打印一个列表给出错误,指出迭代器不可递减
- C++:从两个包含子类 (typedef) 的列表创建一个列表
- 在 std 列表中查找对象并将其添加到另一个列表
- 在c++中遍历一个列表并在另一个列表中搜索每个元素
- 我在 C++ 中创建了一个列表容器类,但它没有按预期工作
- 如何通过赋值运算符重载将一个列表复制到另一个列表上?C++
- 正在将指针复制到assign运算符中的另一个列表元素
- 在c++中传递一个列表作为返回类型
- 如何在c++中创建一个列表及其内容常量
- C++:如何将迭代器设置为另一个列表中的结构内的列表
- C++ std::sort 引用另一个列表的自定义比较函数
- 如何让数组在下一次输入之前显示数组内容的前一个列表?
- 如果我创建一个列表:<T>:迭代器,有没有办法重载++(增量)运算符?
- 我如何解码一个列表的列表
- 如何在c++中用一个目录中的所有文件夹填充一个列表框
- c++遍历一个列表来调用某个函数