阻止 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

相关文章:

  • 2021-09-26
  • 2021-11-17
猜你喜欢
  • 2023-02-02
  • 2021-11-01
  • 2022-12-23
  • 2022-12-23
  • 2021-10-13
  • 2022-02-28
  • 2021-08-29
相关资源
相似解决方案