从不同的线程同步访问和删除列表中的项
Synchronize access and delete item in a list from different threads.
我有一个对象列表。而一个线程将根据某些条件添加或删除此列表中的对象。而其他线程将访问此列表中的对象。例:
List<node*> list
Thread1:
{
list.append(node);
list.removeOne(index);
............
}
Thread2
{
Node* node = list.at(index);
if(node)
doSomething(node);
}
如何避免访问空指针时,执行doSomething(节点),但节点从thread1删除;
虽然可以使用标准锁机制(参见互斥锁)来解决这个问题,但您可能需要研究特定于读写器的同步原语。它将允许有多个读取器,但一次只能有一个写入器处理列表。
相关文章:
- 在 C++ 的自定义运算符中删除与删除[](不同于常见的删除与删除[]问题)
- C++链表删除和删除返回功能
- 从gsl_matrix中删除列
- 从链表中删除值/删除未动态分配的值
- 当我使用dynamic_cast并删除对象删除时,析构函数是如何工作的?
- 如何在 C++ 中使用删除运算符删除单个数据
- 为什么擦除+删除比删除更有效
- 用户使用C++中的删除功能删除文件
- 删除和删除[]在内部如何工作?
- 当删除或删除[]被执行时,计算机会做什么?
- 如何在不删除C++集中删除项目?
- 如何在C 中删除或删除.jpg和.dpx图像文件
- 删除或删除 [] 在新的 int[][] 上
- 在 C++ 中使用 try-catch 进行删除 [] 或删除操作是否必要
- C++删除和删除中的逻辑[]
- 是否有任何工具可以警告可能滥用删除或删除[]
- 在函数调用中堆和删除.如何删除本地动态内存
- 从 2D 数组中删除列C++
- 删除[]与删除在for循环中
- 列表控件按特定列删除项