主線程M
數據D:map<int,std::string>
全局變量bool:IsModified
線程B負責更新D,D更新時,并負責修改全局IsModified 為true
工作線程:A,只進行讀數據D,不進行寫操作.
線程A偽代碼如下:
while(1){
map<int,std::string> *pData;
if (IsModified){
pData = GetData();
//重新獲取新數據
}
//迭代pData
//do something
Sleep(1);
}
//這樣就不需要使用臨界區了
//個人想法,歡迎拍磚.