主線程M
數(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è)人想法,歡迎拍磚.