我有一个这样定义的地图。
typedef std::map< tstring, unsigned int > ErrorToCount_T;
ErrorToCount_T m_ErrorToSuppress;
我像这样使用它。
ErrorToCount_T::iterator itr = m_ErrorToSuppress.find( val );
if( itr != m_ErrorToSuppress.end())
{
if( (itr->second) % m_LogFreq == 0)
//Do something
else
//Do something else
InterlockedIncrement( &itr->second);
}
我看到了这个,我明白 find 是线程安全的。但我在想 InterlockedIncrement( &itr->second) 也会是线程安全的吗?上面的代码线程安全吗?在多线程环境中,此映射中绝对没有插入。