typedef map<long, long> CIndexToDataMap;
CIndexToDataMap m_IndexToDataMap;
HRESULT Thread1Method()
{
{
AutoLock autoLock(m_CritSec);
Trace(_T("Before inserting Map size is = %d...\n"),
m_IndexToDataMap.size()); // size 10
CIndexToDataMap ::iterator itr = m_IndexToDataMap.begin();
while (itr != m_IndexToDataMap.end())
{
Trace(_T("Index%d corresponds to data %d."), itr->first, itr-
second); // can see all the 10 data
itr++;
}
}
{
AutoLock autoLock(m_CritSec);
m_IndexToDataMap.insert(pair<long, long>(nIndex, ldata));
Trace(_T(" After inserting Map size is = %d...\n"),
m_IndexToDataMap.size()); //size is 11
for(CIndexToDataMap ::iterator itr1 =
m_IndexToDataMap.begin(); itr1 != m_IndexToDataMap.end(); ++itr1)
{
Trace(_T("Index%d corresponds to data %d."), itr1->first, itr1-
second); //PROBLEM HERE, can see only 2 records
}
}
HRESULT Thread2Method(nIndex)
{
AutoLock autoLock(m_CritSec);
if (m_IndexToDataMap.find(nIndex) != m_IndexToDataMap.end())
{
nScanConfigIndex = m_IndexToDataMap[nIndex];
return TRUE;
}
}
compilable so I couldn't see what was wrong by running it either. Do