主线程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);
}
//这样就不需要使用临界区了
//个人想法,欢迎拍砖.