noob問題:使用Win32的事件對象
此鏈接顯示我的問題是,如果ThreadProc的是真正的線程安全CreateEvent和CreateThread的
http://msdn.microsoft.com/en-us/library/ms686915(v=vs.85).aspx
的例子嗎?
具體來說就是dwWaitResult變量。由於所有線程都在等待同一個事件,所以原來這段代碼可以正常工作,但是創建了不同的事件,例如,這不正確?
noob問題:使用Win32的事件對象
此鏈接顯示我的問題是,如果ThreadProc的是真正的線程安全CreateEvent和CreateThread的
http://msdn.microsoft.com/en-us/library/ms686915(v=vs.85).aspx
的例子嗎?
具體來說就是dwWaitResult變量。由於所有線程都在等待同一個事件,所以原來這段代碼可以正常工作,但是創建了不同的事件,例如,這不正確?
dwWaitResult
變量是該函數中的局部變量。因此每個單獨的線程都有自己的副本,這可以確保該變量是線程安全的。每個線程都有自己的堆棧,因此所有局部變量都是特定於單個線程的。
該事件是通過名稱創建的,所以如果該事件已經創建,則可以在任何其他線程中「重複」創建具有相同名稱的事件。結果,示例代碼是線程安全的。
「因此所有局部變量都是特定於單個線程的。」是真的,因爲變量是本地和非靜態的,每個調用者(線程)都有一個單獨的變量dwWaitResult實例化? – Eric 2011-01-11 15:26:20