我想通過全局變量在兩個同時運行的線程 之間進行通信。如果else語句不起作用
char dir='w'; //global var
UINT EditDir (LPVOID pParam);//accepts dir from user in a loop
UINT Move (LPVOID pParam); //processes dir (its incomplete)
int main()
{
........
........
CWinThread* pThread1 = AfxBeginThread(EditDir,(LPVOID)NULL);
CWinThread* pThread2 = AfxBeginThread(Move,(LPVOID)NULL);
WaitForSingleObject(pThread1, INFINITE);
........
........
}
UINT EditDir(LPVOID pParam)
{
bool end=false;
while (!end)
{
::dir = getchar();
Sleep(10);
if (::dir=='q')end=true;//***************************************
}
return 0;
}
UINT Move (LPVOID pParam)
{
//process dir in a loop
return 0;
}
在while
循環的if
聲明不起作用它像編譯器編譯刪除前行。
我按q
循環應該結束,但持續使用時間長後。
我在哪裏錯了?
@EdHeal請解釋爲什麼和在哪裏? –
嘗試使用「-O0」標誌進行編譯以檢查編譯器優化是否真的是原因 – 2016-04-15 11:17:59
請解釋在線程和其他線程創建的位置之間的通信是如何發生的。 –