读书人

地图加锁

发布时间: 2012-09-10 22:20:12 作者: rapoo

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();  } 

读书人网 >C++

热点推荐