我想通过全局变量在两个同时运行的线程 之间进行通信。如果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
请解释在线程和其他线程创建的位置之间的通信是如何发生的。 –