2014-05-12 80 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用於使線程等待,直到另一個線程完成某事。實際用途是協調,就像在飛機下降之前不要着陸飛機。