为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
茅侃侃 2019-07-15 10:32:14
什么时候使用任务。延迟,什么时候使用线程。睡眠?什么时候使用有好的规则吗?任务延迟对决线,睡觉?具体来说,是否有一个最低值来提供一个比另一个有效/有效率?最后,由于Task.Delay导致异步/等待状态机上的上下文切换,是否存在使用它的开销?
查看完整描述

4 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

使用Thread.Sleep当您想阻止当前线程时。

使用Task.Delay当您想要逻辑延迟而不阻塞当前线程时。

这些方法不应以效率为首要考虑。他们在现实世界中的主要用途是作为I/O操作的重试计时器,这是以秒而不是毫秒为单位的。


查看完整回答
反对 回复 2019-07-15
?
HUWWW

TA贡献1874条经验 获得超12个赞

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


查看完整回答
反对 回复 2019-07-15
  • 4 回答
  • 0 关注
  • 572 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信