首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

地图加锁

2012-09-10 
map加锁for (std::mapint, ST_TRANS_INFO::iterator iter m_TransInfo.begin() iter ! m_TransInfo.

map加锁
for (std::map<int, ST_TRANS_INFO>::iterator iter = m_TransInfo.begin(); iter != m_TransInfo.end(); )
{
  time_t tCurrent = time(NULL);
  if (difftime(tCurrent, iter->second.tRtcpArrived) >= 30.0f)
  {
  m_TransInfo.erase(iter++);
  }
  else
  {
  ++iter;
  }
}

我仅需要在difftime为true的时候对map进行write,请问如何加锁啊,加在最外层,如果迭代很频繁又不进difftime就感觉很浪费资源,请问有什么好办法吗

[解决办法]

探讨

引用:

為什麼需要多線程?單個線程負責擦除就可以

业务处理比较复杂,有另外的线程修改数据
请问上面的提问中,因该如何加锁

[解决办法]
C/C++ code
if (difftime(tCurrent, iter->second.tRtcpArrived) >= 30.0f)  {  Lock();  m_TransInfo.erase(iter++);  UnLock();  } 

热点排行