Thread.Sleep(0)是什么意思C#?

时间:2013-06-29 04:08:07

标签: c#

是否意味着没有延迟?

一本书如下所述 **

  

Thread.Sleep(0)放弃线程的当前时间片   立即,自愿将CPU交给其他线程。

**

这是否意味着即使一个语句应该被执行,给睡眠设为0会暂时跳过执行?

5 个答案:

答案 0 :(得分:4)

0表示没有最小时间段,在此之前控制权将返回给线程。但是,如果此时有任何其他线程准备好运行,则可能会安排它们,因此您的线程将在非零时间段内休眠。

对于您指定的任何其他时间段也是如此 - Sleep(N)表示它应该睡眠指定时间的最小,但可能会休眠一段任意更长的时间。< / p>

同时,Sleep(0)表示如果没有其他线程准备好运行,控制可以/将立即返回到您的线程。

答案 1 :(得分:2)

它允许操作系统继续处理可能正在等待的任何其他线程。下一个语句将在当前线程恢复时立即执行 - 这可能是立即执行,或者在其他线程生成后的一段时间后执行。

答案 2 :(得分:1)

这意味着您将允许其他进程运行其代码,但也会尝试尽快继续使用您自己的代码。

答案 3 :(得分:0)

使用Thread.Sleep(0),您的代码会暂停一个周期,然后安排到下一个可用的广告位。

答案 4 :(得分:-2)

可能就像

bool isRunning;

public void Main
{
    Thread t = new Thread(Method);
    t.Start();
    isRunning = true;
}

public void Method(int i)
{
    while(isRunning)
    {
        i = 0;
        i++;
        Thread.Sleep(0);
        Console.WriteLine(i);
    }
}