我有一種情況,我一次執行多個線程。在某些情況下,這些線程將被放置在while()循環中一段未知的時間,並且如果在此循環中捕獲了一定數量的線程,那麼調度程序最終會停止讓其他線程執行。延遲並喚醒正在執行的任務? (Task.Delay?)
我想知道是否有某種方式可以延遲執行線程(將它從預定列表中移除),然後讓其他線程進入。然後是否可以稍後通過線程ID或某事喚醒該線程像那樣?
我在閱讀有關Task.Delay並看到它暫停執行的時間範圍,並且有可能爲無限次的時間計時,但是是否有可能無限地計時直到事件發生,然後通過某個名稱或ID取消它?
編輯:我想這個問題是一個更難張貼代碼,但或多或少我有一種情況,請求進來,放入一個循環,如:
while(true){
//check for something that could make me want to delete this thread/request
//do some things
}
我注意到當我發送大量的請求時,我從來沒有停止過,但仍然在他的循環中(我知道),但似乎可以做到這一點的線程的最大數量是16/32(取決於我的計算機,我運行它on),並阻止其他請求被安排運行。
我想知道,如果while()循環裏面我可以做這樣的事情:
while(true){
//put this thread to sleep
//do some things that
//call some function to wake up the specific thread I need to do work on, before I put it back to sleep
}
在此的差別現在是不是16/32線程上運行,我可以有1「王線程「進入這個while()循環可以」做一些事情「,然後喚醒需要受到'事物'影響的線程。是否有辦法睡覺並喚醒特定線程,以便可以安排其他線程運行?
沒有代碼,很難確切地告訴你想要做什麼,但可能[Monitor.Wait(Object)](https://msdn.microsoft.com/en-us/library/ateab679(v = vs .110).aspx)是你在找什麼? – sstan
對不起,我添加了更多解釋。 – Pipeline