Re: [問題] 請問VC的Thread

看板C_and_CPP作者 (累人啊....)時間15年前 (2010/04/20 16:19), 編輯推噓5(508)
留言13則, 5人參與, 最新討論串3/3 (看更多)
※ 引述《tyc5116 (累人啊....)》之銘言: : 請問一下,VC所提供的Thread可以拿來重複使用嗎 : 意思是說,假設我有A,B,C三個function : 一開始指定這個Thread用來執行A,當執行完了以後再換B用,再換C : 請問這樣可以嗎 : -- : ◆ From: 163.18.48.28 : 推 jerohands:那請問這樣開Thread有什麼含意嗎? 04/11 18:50 : 推 hilorrk:用thread不就是為了把這種事情交給OS處理... 04/11 21:32 : → tyc5116:恩..我不知道該怎麼解釋耶,還要和老師討論 04/11 22:46 : → tyc5116:只是先問問這樣的方式有辦法實現嗎?? 04/11 22:46 : → fragileness:Thread裡面跑F F有一個while loop去等Event 04/12 00:44 : → fragileness:根據等到哪個Event來決定要呼叫A或B或C 04/12 00:45 : → fragileness:跑完一次之後回到迴圈開頭就可以再等下一個Event 04/12 00:45 : 推 ilovebbs:a();b();c();不就好了?XD 04/12 08:19 : → ledia:開 thread 之後, 主 thread 要等 (join) 04/12 09:27 不好意思,各位,我的這個部份有些問題,之前描述的時候也沒有很明顯 我想作的功能有兩種(看看這兩種哪一種是可以實現的) 1. 主程式─┬→產生Thread,執行Func ┬→結束 (假設迴圈3次) ↑ │ └───────────┘ 如此,依照一般的作法,當要觸發的時候gcnew一個Thread來執行Func 執行結束後,這個Thread就會消失了,下一次的時候再gcnew一次,執行,共三次 我想要的方式是,產生一個Thread出來,執行的這三次都用同一個Thread 反正也沒有衝突的問題,不過VC所提供的Thread似乎不允許這樣,是嗎?? 有辦法實現這樣嗎? 2. 有數個不一樣的function,然後先跟系統預留出10個Thread的空間 function要執行的時候,就檢查這10個Thread有沒有哪一個目前是沒有在使用的 若有,便拿那個Thread來執行Function,若同一時間有10個Function在執行時 第11個Function要執行時找不到有空閒的Thread,便開始等待,等到有空閒的Thread 可以用時,才執行這第11個Function 第二個比較接近我原來想要操作的方式,但我不知道怎麼實現 以上兩種方法,請問有辦法實現嗎?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.18.48.28

04/20 16:41, , 1F
1.的話那就再寫個f跑三次Func 再叫一個Thread跑它就好了...
04/20 16:41, 1F

04/20 16:54, , 2F
1的話,不一定是連續跑3次,有可能是跑一次後再經過什麼事件
04/20 16:54, 2F

04/20 16:54, , 3F
才又再跑一次Func,那個只是表示方式而已
04/20 16:54, 3F

04/20 16:58, , 4F
你需要的是 work-queue. 把要做的事push到Q中, 你的thread
04/20 16:58, 4F

04/20 16:58, , 5F
從Q中pop東西出來做, 沒東西則sleep
04/20 16:58, 5F

04/20 17:57, , 6F
可以麻煩cole大舉個例子嗎..不是很清楚
04/20 17:57, 6F

04/20 18:09, , 7F
把要做的事存到queue,thread裡就是把queue裡的事拿出來
04/20 18:09, 7F

04/20 18:09, , 8F
做,當空的時候就sleep
04/20 18:09, 8F

04/20 18:11, , 9F
可以理解你的想法 只是懷疑有沒有必要這麼做....XD
04/20 18:11, 9F

04/20 18:21, , 10F
對了,原po是在寫.NET的吧@@? 如果不想自己這個功能的話,
04/20 18:21, 10F

04/20 18:22, , 11F
可以參考Sytem.Threading.ThreadPool直接用
04/20 18:22, 11F

04/20 18:26, , 12F
喔喔 .NET原來也有這功能啊...囧!!
04/20 18:26, 12F

04/24 14:55, , 13F
恩...我再試試
04/24 14:55, 13F
文章代碼(AID): #1BpMEBGP (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BpMEBGP (C_and_CPP)