线程同步,sleep函数!!
猪的飞想 2007-07-19 12:03:40 UINT CDIY_MFC_MultithreadingDlg::ThreadNo1(LPVOID pParam)
{
srand( (unsigned)time( NULL ) );
PParam* pp=(PParam*)pParam;//必须这样过度!
CSingleLock singleLock(&(pp->m_Section));//Section也不例外!!!!!!
for (int i=0;;i++)
{
if (pp->m_Terminate==FALSE)
{
singleLock.Lock();
pp->m_Result=rand();
if (1600<pp->m_Result&&pp->m_Result<1700)
{
pp->m_Terminate=TRUE;
//pp->m_ThreadID="线程胜利!"
pp->m_ResultR=pp->m_Result;
pp->ThreadID=1;
pp->m_Count=i;
break;
}
else
{ Sleep(1);
singleLock.Unlock();
}
}
else
{
break;
}
}
return 0;
}
UINT CDIY_MFC_MultithreadingDlg::ThreadNo2(LPVOID pParam)
{
srand( (unsigned)time( NULL ) );
PParam* pp=(PParam*)pParam;//必须这样过度!
CSingleLock singleLock(&(pp->m_Section));//Section也不例外!!!!!!
for (int i=0;;i++)
{
if (pp->m_Terminate==FALSE)
{
singleLock.Lock();
pp->m_Result=rand();
if (1800<pp->m_Result&&pp->m_Result<1900)
{
pp->m_Terminate=TRUE;
//pp->m_ThreadID="线程胜利!"
pp->m_ResultR=pp->m_Result;//过度
pp->ThreadID=2;
pp->m_Count=i;
break;
}
else
{ Sleep(1);
singleLock.Unlock();
}
}
else
{
break;
}
}
return 0;
}
请问为什么必须加Sleep()函数呢?不为为什么不可以啊?我必须这样过度:“pp->m_ResultR=pp->m_Result;//过度”否则出现不了我理想的结果,说明有结果了其他线程没有马上终止!为什么啊?