2014-05-12 47 views
0

我一直在努力与多线程现在...设法在昨天晚上在我当前的程序工作,我想要的是有一个简单的计时器运行,而我我仍然可以使用我的应用程序。多线程与C++的WinApi

我用msdn reference

我设法使它正常工作(或至少我觉得它工作正常),此代码:

case ID_MENUBUTTON0: 

     hRunMutex = CreateMutex(NULL, TRUE, NULL); 
     _beginthread(Sistem::timeFrame, 0, NULL); 
     break; 

case ID_MENUBUTTON4: 
     ReleaseMutex(hRunMutex); 
     PostQuitMessage(0); 
     break; 

SISTEM ::时间表FUNC计算时间,在静态的100ms的Sleep(100);间隔输出窗口并每100ms更新一次窗口。

现在我想问什么,因为我没有真正理解这一切的大惊小怪,为什么有这么多额外的东西? 如WaitForSingleObject,我见过很多,但无法弄清楚它的实际用途。除了ReleaseMutex()之外,有什么我应该留意的吗?

+0

'我一直在多线程中苦苦挣扎......'Mutithreaded编程并不是微不足道的。你的小例子现在有很多问题,例如确保Mutex真的被释放(如果'ID_MENUBUTTON4'永远不会被执行?)。我强烈建议从实际示例程序中查看和学习,并阅读关于多线程编程的主题和书籍(不,MSDN不会教你多线程编程),而不是编写自己的代码。 – PaulMcKenzie

+0

我已将ReleaseMutex添加到所有出站,如果这就是您的意思。 – Survaf93

回答

1

WaitForSingleObject和WaitForMultipleObjects用于使线程等待,直到另一个线程完成某事。实际用途是协调,就像在飞机下降之前不要着陆飞机。