阻止 vs. 轮询
2011-03-16 17:25 Dirichlet 阅读(387) 评论(0) 编辑 收藏 举报阻止 vs. 轮询
线程可以等待某个确定的条件来明确轮询使用一个轮询的方式,比如:
while
(!proceed);
或者:
while
(DateTime
.Now < nextStartTime);
这是非常浪费CPU时间的:对于CLR和操作系统而言,线程进行了一个重要的计算,所以分配了相应的资源!在这种状态下的轮询线程不算是阻止,不像 一个线程等待一个EventWaitHandle(一般使用这样的信号任务来构建)。
阻止和轮询组合使用可以产生一些变换:
while
(!proceed) Thread
.Sleep (x); // "轮询休眠!"
x 越大,CPU效率越高,折中方案是增大潜伏时间,任何20ms的花费是微不足道的,除非循环中的条件是极其复杂的。
除了稍有延迟,这种轮询和休眠的方式可以结合的非常好。(但有并发问题,在第四部分讨论)可能它最大的用处在于程序员可以放弃使用复杂的信号结构 来工作了。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yuanhuiqiao/archive/2010/06/17/5676212.aspx