Доброго времени суток. Есть код (запускается два потока и ожидается их выполнение) :
Код | const int size = 800;
UINT Func1( LPVOID pParam ) { for(int i=0; i<size; ++i) { for(int j=0; j<size; ++j) { for(int m=0; m<size; ++m) { int h = 0; } } } //AfxMessageBox("Complete 1"); return 0; }
UINT Func2( LPVOID pParam ) { for(int i=0; i<size; ++i) { for(int j=0; j<size; ++j) { for(int m=0; m<size; ++m) { int h = 0; } } } //AfxMessageBox("Complete 2"); return 0; }
void CmultiprocDlg::OnBnClickedButton1() { CWinThread *pThread1 = AfxBeginThread(Func1, this); CWinThread *pThread2 = AfxBeginThread(Func2, this);
HANDLE arr[2]; arr[0] = pThread1->m_hThread; arr[1] = pThread2->m_hThread;
WaitForMultipleObjects(2, &arr[0], true, INFINITE); AfxMessageBox(_T("finished")); }
|
Этот код работает. Но если раскомментировать строки с AfxMessageBox, то все зависает. То есть, когда доходит до сообщения в первом потоке (ставлю там breakpoint), дальше жму F10 и все наглухо повисает. В чем проблема? AfxMessageBox какой то потокобезопасный и чего то ждет? Спасибо. |