c++ - 从不同线程同步访问和删除列表中的项目。

标签 c++ multithreading

我有一个对象列表。而一个线程将根据某些条件添加或删除此列表中的对象。而其他线程将访问此列表中的对象。 例如:

List<node*> list


Thread1:

 {
   list.append(node);
   list.removeOne(index);
   ............

 }
Thread2
{

   Node* node = list.at(index);
   if(node)
     doSomething(node);
}

Thread2 如何在执行 doSomething(node) 但节点从线程 1 中删除时避免访问空指针;

最佳答案

虽然这可以使用标准锁定机制(请参阅互斥)来解决,但您可能需要查看 Reader-Writer 特定的同步原语。它将允许有多个读取器,但一次只能有一个写入器处理列表。

关于c++ - 从不同线程同步访问和删除列表中的项目。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22651085/

相关文章:

C++ 内存模型 - 此示例是否包含数据竞争?

c++ - 关于 boost.asio 异步 sleep

c++ - 函数原型(prototype)认为一个类类型是未定义的,尽管它在同一个头文件中定义

c++ - SQLite——C++多线程读写

c - 新手线程问题 (FFTW)

c++ - 数组中的相同字符串具有相同的内存地址

c++ - boost 和 c++11 线程兼容性

multithreading - 用户级线程和内核支持的线程之间的区别?

python - 检测线程何时在 python 应用程序中运行?

C++(WINAPI - WIN32) 第二个编辑框无法读取输入值