【发布时间】:2020-01-22 01:17:25
【问题描述】:
我将 Thread.Sleep 用于较低优先级的线程,以在线程处理之前等待变量递增;然后它循环并再次等待相同的变量。
如果我有很多相同类别的线程,比如 1000 个实例,与使用 ManualResetEvent 而不是 Thread.Sleep 相比,这会花费更多的处理器周期吗?
【问题讨论】:
-
请分享你的代码
-
这个问题对我来说似乎没有多大意义。无论线程如何进入此状态,处于等待状态的线程都不会消耗 CPU:通过调用
Sleep或等待句柄。可能不同的是系统调度程序检查唤醒事件的频率(在Sleep的情况下,它由指定为参数的周期决定)。所以回答would this take substantially more processor cycles- 它不应该对调度程序(在这种情况下是主要的 CPU 消费者)产生任何影响,因为这仅意味着在两种情况下遍历相同大小的线程队列。 -
在 Thread.Sleep() 期间调度程序多久唤醒一次线程?
标签: .net multithreading