意思是没有延迟?
一本书说下面**
Thread.Sleep(0) 立即放弃线程的当前时间片,自愿将 CPU 交给其他线程。
**
这是否意味着即使应该执行一条语句,但为睡眠提供 0 会暂时跳过执行?
意思是没有延迟?
一本书说下面**
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);
}
}