[英]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.