什么时候使用任务。延迟,什么时候使用线程。睡眠?

什么时候使用任务。延迟,什么时候使用线程。睡眠?

什么时候使用有好的规则吗?任务延迟对决线,睡觉?

  • 具体来说,是否有一个最低值来提供一个比另一个有效/有效率?
  • 最后,由于Task.Delay导致异步/等待状态机上的上下文切换,是否存在使用它的开销?


茅侃侃
浏览 573回答 4
4回答

守候你守候我

使用Thread.Sleep当您想阻止当前线程时。使用Task.Delay当您想要逻辑延迟而不阻塞当前线程时。这些方法不应以效率为首要考虑。他们在现实世界中的主要用途是作为I/O操作的重试计时器,这是以秒而不是毫秒为单位的。

HUWWW

我想补充些东西。实际上,Task.Delay是基于计时器的等待机制。如果你看看来源您会发现对Timer类,它对延迟负责。另一方面Thread.Sleep实际上,使当前线程进入睡眠状态,这样您只会阻塞和浪费一个线程。在异步编程模型中,应该始终使用Task.Delay()如果你想要的东西(继续)发生了一些延迟。
打开App,查看更多内容
随时随地看视频慕课网APP