3 回答
TA贡献1815条经验 获得超6个赞
Thread.Sleep
Thread.Sleep
有其用途:在MTA线程上测试/调试时模拟冗长的操作。在.NET中,没有其他理由使用它。
Thread.Sleep(n)
表示至少阻塞当前线程的时间(或线程量子数)。 n
毫秒。在不同版本/类型的Windows和不同的处理器上,时间间隔的长度是不同的,通常从15毫秒到30毫秒不等。这意味着线程几乎可以保证阻塞时间超过 n
毫秒。线程重新唤醒的可能性。 n
毫秒几乎是不可能的。 所以, Thread.Sleep
对时机来说是毫无意义的 .
线程是一个有限的资源,它们需要大约200000个周期来创建,大约需要100000个周期来销毁。默认情况下,它们为其堆栈预留1MB的虚拟内存,并为每个上下文开关使用2000至8000次循环。 这使得任何等待线程都成为 巨量 浪费。
Thread.Sleep
编辑:
我们有两个不同的用例:
我们在等待,因为我们知道一个具体的时间周期,我们应该继续(使用 Thread.Sleep
,System.Threading.Timer
或类似)
我们在等待,因为某些情况会在某一时间发生变化.关键字is/are 一段时间!如果条件检查在我们的代码域中,我们应该使用WaitHandles-否则外部组件应该提供某种挂钩.如果它没有,它的设计是不好的!
我的回答主要涉及用例2。
TA贡献1806条经验 获得超8个赞
- 3 回答
- 0 关注
- 429 浏览
添加回答
举报