C++ STL中的向量是否可重入或線程安全? 我可以使用兩個線程並在不使用互斥鎖的情況下在矢量的兩半上工作(在這種情況下排序)嗎? 例如:使用線程對向量排序
int size = (Data_List.size())/2;
Thread A()
{
................ // Do we need to lock Data_list with a mutex
sort(Data_List.begin(),Data_List.begin()+size,cmp);
}
Thread B()
{
....// Do we need to lock Data_list with a mutex
sort(Data_List.begin()+(size+1),Data_List.end(),cmp);
}
我的問題是我們需要鎖定DATA_LIST的使用互斥訪問?
注意:cmp函數是一個常規的int比較函數。
我懷疑是否這真的買你東西,當你完成排序各佔一半,該名單還在進行排序。你仍然需要整理/兩個部分合併到一起 – 2010-03-03 02:59:48
@約翰:我採取的樣本排序使用線程,然後以後使用遞歸倍增至半結合起來,一起排序...... 我在想,如果我可以只使用偏移量和工作在相同的數據結構,沒有創建額外的副本和分別在副本上工作的開銷... – tomkaith13 2010-03-03 03:05:29
好吧,我同意所有其他答案 - 只要你不改變它就應該沒問題排序過程中矢量中元素的數量。 – 2010-03-03 03:17:07