Hi LaoWei. First, there is a little bug in your CreateMultiThread
:
void CTestMultiThreadApp::CreateMultiThread()
{
DWORD tID;
g_nIndex**[1]** = 0;
::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, (LPVOID)&(g_nIndex**[0]), 0, &tID);
g_nIndex[1]** = 1;
::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, (LPVOID)&(g_nIndex**[1]**), 0, &tID);
}
Second, you use CreateThread
in conjunction with MFC. This is dangerous. If your thread uses MFC support it should always be created via AfxBeginThread
. Knowing this, you can write CreateMultiThread
as follows:
void CTestMultiThreadApp::CreateMultiThread()
{
DWORD tID;
g_nIndex[0] = 0;
AfxBeginThread((AFX_THREADPROC)afxThreadProc,(LPVOID)&(g_nIndex[0]));
g\_nIndex\[1\] = 1;
**AfxBeginThread**((AFX\_THREADPROC)afxThreadProc,(LPVOID)&(g\_nIndex\[1\]));
}
Now your "Debug Assertion Failed" is gone bye bye... :) RK