有事還報這個錯:
map/set iterator not decrementable
(上面這三個錯誤運行時會選一個報)
code:
unsigned __stdcall CDotPlots::InitParticles( PVOID InitInfo )
{
CDotPlots::m_csCritical.Enter( );
ThreadArg* pThreadInfo = (ThreadArg*)InitInfo;
for(int i = pThreadInfo -> startEventNo;
i < pThreadInfo -> endEventNo; i++)
{
ASSERT( pThreadInfo ->pData );
int x = pThreadInfo->pData->
m_arrEventList[i].arri_parameter_values[pThreadInfo->hParNo];
int y = pThreadInfo->
pData->m_arrEventList[i].arri_parameter_values[pThreadInfo->vParNo];
ASSERT( pThreadInfo->pDotPlot );
VALUE& mapCol = pThreadInfo->pDotPlot->m_mapParticles[ x ];
IDS& vIDS = mapCol[ y ];
vIDS.push_back( i );
//注釋掉這三行就沒錯了
//不創建線程執行這個函數而在主線程中調用也沒有任何錯
}
CDotPlots::m_csCritical.Leave( );
return 0;
}
map,vector不是線程安全的