代码如下所示:
CCriticalSection m_Section;
void CTestDlg::aaa(LPVOID pParam)
{ int n = 20;
while (n > 0)
{
m_Section.Lock();
TRACE("aaa\n");
n--;
m_Section.Unlock();
}
}void CTestDlg::bbb(LPVOID pParam)
{ int n = 20;
while (n > 0)
{
m_Section.Lock();
TRACE("bbb\n");
n--;
m_Section.Unlock();
}
}void CSuperGetDlg::OnTest()
{
m_hDownloadThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)CTestDlg::Download,this, 0, &m_dwThreadDownload);
m_hAnnexThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)CTestDlg::Annex,this, 0, &m_dwThreadAnnex);
}输出的结果为20个aaa这后,再20个bbb,按道理说,应该一个输出一交才对呀,即
aaa
bbb
aaa
bbb
aaa
bbb
aaa
bbb
...