STL中map,vector等線程安全一個(gè)簡(jiǎn)單的個(gè)人想法
數(shù)據(jù)D:map<int,std::string>
全局變量bool:IsModified
線程B負(fù)責(zé)更新D,D更新時(shí),并負(fù)責(zé)修改全局IsModified 為true
工作線程:A,只進(jìn)行讀數(shù)據(jù)D,不進(jìn)行寫操作.
線程A偽代碼如下:
while(1){
map<int,std::string> *pData;
if (IsModified){
pData = GetData();
//重新獲取新數(shù)據(jù)
}
//迭代pData
//do something
Sleep(1);
}
//這樣就不需要使用臨界區(qū)了
//個(gè)人想法,歡迎拍磚.
posted on 2011-03-19 14:42 天下 閱讀(7108) 評(píng)論(11) 編輯 收藏 引用