MultiThread 一問 |
答題得分者是:lu
|
newfbimod
一般會員 發表:3 回覆:9 積分:2 註冊:2004-11-08 發送簡訊給我 |
|
lu
高階會員 發表:11 回覆:189 積分:195 註冊:2003-11-19 發送簡訊給我 |
引言: 各位前輩, 想請問 若我先create 一個thread(thread1),然後我在它的Execute()裡,又create 另一個thread(thread2)然後讓它也去run, 那麼他們兩個狀態是同時在run嗎< 還是thread1的Execute()先執行完,再去Run thread2的Execute裡面的東西阿?在一個前提之下,如果你2個Thread都是一CREATE就執行的話,那是的,2個THREAD會同時執行 ========================= <>大家一起快樂寫程式> |
newfbimod
一般會員 發表:3 回覆:9 積分:2 註冊:2004-11-08 發送簡訊給我 |
|
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
|
newfbimod
一般會員 發表:3 回覆:9 積分:2 註冊:2004-11-08 發送簡訊給我 |
不好意思唷,那如果呼叫Resume, thread2就執行的話
那為什麼我在thread 2裡設立了一個flag, 當執行一些運算後會將flag設為true(預設值為false),那當thread1檢查這個flag,發現為true時再繼續自己的運算,可是當我再跑的時候會發現thread2好像完全沒有work的感覺,使得flag一直都是false,跟預期的結果不太依樣,所以才會問是不是要等thread1跑完thread2才會執行,因為在debug時發現,是先把thread1執行完,緊接著才會跑thread2這時flag才會變成true,可是此時我的thread1已經跑完囉< >
這到底是為什麼呢< >
希望大大解惑..........
PS 希望我的表達你看得懂
|
lu
高階會員 發表:11 回覆:189 積分:195 註冊:2003-11-19 發送簡訊給我 |
引言: 不好意思唷,那如果呼叫Resume, thread2就執行的話 那為什麼我在thread 2裡設立了一個flag, 當執行一些運算後會將flag設為true(預設值為false),那當thread1檢查這個flag,發現為true時再繼續自己的運算,可是當我再跑的時候會發現thread2好像完全沒有work的感覺,使得flag一直都是false,跟預期的結果不太依樣,所以才會問是不是要等thread1跑完thread2才會執行,因為在debug時發現,是先把thread1執行完,緊接著才會跑thread2這時flag才會變成true,可是此時我的thread1已經跑完囉 這到底是為什麼呢 希望大大解惑..........你這個方法在單工系統可行,但是在多工系統.......恩....不太好喔 建議你改用EVENT來做 如下例: 先在Thread1 和 Thread2 一開始的地方加上 __fastcall TThread1() { //...原來的CODE EventObj = CreateEvent(NULL,FALSE,FALSE,"TEST_Event_Object"); } 然後在THREAD1內原來再等待FLAG的地方改為 void __fastcall Thread1Execute() { //原來等待FLAG的地方 WaitForSingleObject (EventObj,INFINITE); } 然後在THREAD2內,將原來flag設為true取代成 void __fastcall Thread2Execute() { //原來將flag設為true取代成 SetEvent(EventObj); }試試看吧 ========================= 大家一起快樂寫程式 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |