【1】Sleep(0)正如 参数所示,在远小于1 ms 的时间片内允许其他线程调度CPU 的运行,而保留了绝大部分CPU时间片为本线程运 行
【2】换句话说就是Sleep(0)几乎掌控了所有CPU的使用权,而非让出CPU使用权。
【2】相反:Sleep(1)在参数非0 下,休眠1 ms并且极大的让出CPU使用权, 但可能正由于让出CPU使用权,使得本Sleep休眠控制的很不精准,可能相差几十 毫秒以上
【3】实例如下:
UINT thread_func(LPVOID lp)
{
while(TRUE)
{
Sleep(0);
}
}
UINT thread_func(LPVOID lp)
{
while(TRUE)
{
Sleep(1);
}
}
【2】换句话说就是Sleep(0)几乎掌控了所有CPU的使用权,而非让出CPU使用权。
【2】相反:Sleep(1)在参数非0 下,休眠1 ms并且极大的让出CPU使用权, 但可能正由于让出CPU使用权,使得本Sleep休眠控制的很不精准,可能相差几十 毫秒以上
【3】实例如下:
UINT thread_func(LPVOID lp)
{
while(TRUE)
{
Sleep(0);
}
}
UINT thread_func(LPVOID lp)
{
while(TRUE)
{
Sleep(1);
}
}
Sleep(0)与Sleep(1)的区别
本文探讨了Sleep(0)与Sleep(1)两种线程调度方式的不同之处,Sleep(0)几乎完全控制CPU使用权,而Sleep(1)虽然让出了CPU使用权,但可能导致休眠时间不精确。
860

被折叠的 条评论
为什么被折叠?



