我有一个对象列表。而一个线程将根据某些条件添加或删除此列表中的对象。而其他线程将访问此列表中的对象。 例如:
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/