2014-03-26 41 views
1

我有一个对象列表。虽然一个线程将根据某些条件添加或删除此列表中的对象。而其他线程将访问此列表中的对象。 例:同步来自不同线程的列表中的项目并进行同步。

List<node*> list 


Thread1: 

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

} 
Thread2 
{ 

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

如何线程2避免执行doSomething的(节点)时,但节点从线程1删除访问空指针;

+1

你将需要'互斥'为'列表'。在'C++'中搜索'client'' server'问题,因为这不是一个真正的具体问题。 – Claudiordgz

+0

@TonyD,对不起,我指的是Reader-Writer。谢谢。 – Claudiordgz

回答

2

尽管可以使用标准锁定机制(请参阅互斥锁)解决此问题,但您可能需要查看Reader-Writer特定的同步原语。它将允许有多个阅读器,但是只有一个作者可以一次处理该列表。