Thread.Yeild / Thread.Sleep(0) / Thread.Sleep(1)优缺点对比

原理优势劣势适用场景
Thread.Yeild把当前线程放入到就绪队列中比 Thread.Sleep(0) 速度要快,可以让低于当前优先级的线程得以运行。
可以通过返回值判断是否成功调度了其它线程。
只能调度同一个处理器的线程,不能调度其它处理器的线程。
当没有其它就绪的线程,会一直占用 CPU 时间片,造成 CPU 100%占用率。
如果有核绑定操作,需要慎重
Thread.Sleep(0)

告诉操作系统自己要休息 n 毫秒,
这段时间就让给另一个就绪的线程。

执行后仍在就绪队列

相比 Yield,可以调度任何处理器的线程使用时间片只能调度优先级相等或更高的线程,意味着优先级低的线程很难获得时间片,很可能永远都调用不到。
当没有符合条件的线程,会一直占用 CPU 时间片,造成 CPU 100%占用率。
如果改线程优先级很高,需要慎重
Thread.Sleep(1)

告诉操作系统自己要休息 n 毫秒,
这段时间就让给另一个就绪的线程

执行后到阻塞队列

可以调度任何处理器的线程使用时间片。
无论有没有符合的线程,都会放弃 CPU 时间,因此 CPU 占用率较低。
相比 Thread.Sleep(0),因为至少会休息一定时间,所以速度要更慢对处理延迟敏感,需要慎重

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值