2014-03-26 86 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特定的同步原語。它將允許有多個閱讀器,但是隻有一個作者可以一次處理該列表。