1
我不確定在將任務分配給線程時C#是如何工作的。是否有可能在C#中的同一線程上同時運行兩個任務?
我想驗證一些東西。是否保證在任何時候,每個任務都由一個且只有一個線程處理,而不管該任務在做什麼,即使它剛剛停止或執行了Thread.currentThread()。sleep(),該線程也不會去並服務於其他任務?那麼它在線程和任務之間的1:1呢?無論任務在做什麼,即使它只是在睡覺,或者任務是通過Task.Run調用還是等待Task.Run等?
非常感謝。因此,如果兩個任務都已啓動並且還沒有返回,那麼它們都在同一個線程上執行是完全不可能的? – xander
@xander:請參閱我的編輯 - 考慮到您可以構建自己的任務調度程序,因此很難給出任何絕對值。仔細閱讀Stephen Toub的回覆可能是最好的選擇。請注意,據我所知,任務不會更改線程,因此如果兩個任務已經在單獨的線程上啓動,它們將不會在同一個線程中結束。 –
非常感謝您的參考。我在這裏唯一不確定的是:「如果兩個任務已經在單獨的線程上啓動」。默認行爲是在單獨的線程上啓動任務,而沒有前面提到的特殊情況? – xander