我想知道當多個任務並行運行時,假冒長時間運行的任務的最佳方式是什麼。自帶的頭腦第一件事就是了Thread.Sleep在並行處理中僞造長時間運行的進程的最佳方式是什麼?
public void FakeLongRunningTask()
{
Thread.Sleep(5000);
}
但是與上面的代碼的問題是,調用了Thread.Sleep將阻止這個線程這意味着它將放棄它的處理器時間片,因此調用線程使用的方法。在平行環境中睡覺和根本不調用它一樣好。所以如果我並行運行三個任務,其中一個調用Thread.Sleep,那麼這個任務對性能沒有影響(儘管它可能會強制CLR生成更多的線程!!!)。但我想要的是僞造一個會影響整體性能的任務。
+1延遲是完美的,因爲OP不想實際阻止線程。如果你提供了一個簡短但完整的例子,這個答案會更完整。 – James
不確定。 'Task.Delay'也不使用CPU,是嗎? –
@MthetheWWatson是你的權利,它不使用。 – terrybozzio