繁体   English   中英

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

[英]What does Thread.Sleep(0) mean C#?

是否意味着没有延迟?

一本书说下面的**

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

**

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

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

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

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

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

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

使用Thread.Sleep(0)您的代码将暂停一个周期,然后安排在下一个可用的插槽中。

可能就像

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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM