Thread.Sleep(0)与Thread.Sleep(1)的区别
[MSDN对其参数的描述]
millisecondsTimeout
线程被阻塞的毫秒数。指定零 (0) 以指示应挂起此线程以使其他等待线程能够执行。指定 Infinite 以无限期阻塞线程。
------------------------------------------------------------------------
于是我这样子做:
while (!isQuit)
{
if (file.isHasData)
{
....//进行处理
}
else
{
Thread.Sleep(0);
}
}
我起初认为这样子做此循环便会在isHasData为false时此线程仅占用很少的CPU,因为它会主动放弃系统为其分配的时间片,但事实上运行过程中CPU使用率几乎一直保持100%。
然后我将Thread.Sleep(0)改成Thread.Sleep(1),一切便如我所想像,CPU利用率降下来了。
1)1毫秒引起的结果为什么差别会这么大呢?
2)请问我这么做可以吗?