→ TeaEEE:CreateThread並不會"馬上"執行thread function 06/06 09:21
→ TeaEEE:Wait應該是等待CreateThread回傳的Handle才對不是等id 06/06 09:25
→ TeaEEE:正常情形下thread結束時習慣會用CloseHandel而非ExitThread 06/06 09:35
→ godman362:可以請問一下,所謂等Handle是指哪一個部份 06/06 10:09
→ godman362:ExitThread是我用錯了,謝謝指正 06/06 10:09
→ godman362:我剛剛測試了一下,T大您說的是CreateThread回傳的部份 06/06 10:31
→ godman362:呢? 06/06 10:31
→ godman362:我剛剛宣告了一個Handle去承接CreateThread的回傳值 06/06 10:32
→ godman362:然後將Handle丟給黃色的WaitForSingleObject當參數 06/06 10:32
→ godman362:您所說的是這樣的用法嗎? 06/06 10:32
推 UNARYvvv:三樓那句怪怪的,ExitThread 跟 CloseHandle 是兩回事 06/06 10:47
→ UNARYvvv:呼叫點一個是在新 thread 內,一個是在建立 thread 者 06/06 10:52
→ godman362:我查過ExitThread是暴力關閉Thread 06/06 10:55
→ godman362:那正常結束Thread的方法是什麼? 06/06 10:55
→ godman362:一般的有結束的Thread可以不用自行關閉它 06/06 10:56
→ godman362:那如果是while(true) 這種呢? 06/06 10:56
→ UNARYvvv:ExitThread 是讓 thread 自我結束 06/06 10:56
→ godman362:它會有正規的關閉方式嗎....還是要使用ExitThread暴力 06/06 10:56
→ UNARYvvv:CloseHandle是關閉建立者跟被建立之thread的連結而已, 06/06 10:57
→ UNARYvvv:正規的關閉就是你的 thread 做完事情就 return 或呼叫 06/06 10:58
→ UNARYvvv:ExitThread 呀 06/06 10:58
→ godman362:喔,這樣我瞭解ExitThread的意思了 06/06 10:58
→ godman362:但是我還是不太清楚所謂CloseHandle的解釋 06/06 10:59
→ godman362:「關閉建立者和被建立之Thread」這句是什麼意思? 06/06 10:59
→ godman362:可以麻煩再指點一下嗎 06/06 10:59
→ UNARYvvv:至於Wait的問題解法就是二樓那樣 HANDLE h=CreateThread 06/06 11:00
→ UNARYvvv:WaitForSingleObject(h, ... 06/06 11:01
→ UNARYvvv:所以原本的code根本不算有wait, 程式等於一路執行到 06/06 11:01
→ UNARYvvv:system("pause"); 06/06 11:01
→ UNARYvvv:thread id 跟 thread handle 是不同的東西,原本你等錯囉 06/06 11:02
→ godman362:嗯,這個部份我有改過了,改成像U大您所說得 06/06 11:03
→ godman362:那所謂CloseHandle是代表說我所指定的Handle 06/06 11:04
→ godman362:和原本的Thread或是Event斷絕關係,就無法使用了,是嗎 06/06 11:05
→ UNARYvvv:簡單說就是,若 h=CreateThread(...); 06/06 11:06
→ UNARYvvv:若呼叫 CloseHandle(h); 之後,就不能 WaitFor..(h) 了 06/06 11:06
→ UNARYvvv:所以我上面說CloseHandle是關閉兩者的關聯而已 06/06 11:07
→ godman362:瞭解了,感謝U大的指導 06/06 11:13