【C】让我们来讲一个笑话:“我们用sleep(0)进行时间片管理”
到底哪里好笑了呢?我们来看看glibc的源码吧:看见没?if(seconds == 0) return 0; 所以sleep(0)毫无用处。
然而!不少人把它当成和SwitchToThread()、sched_yield()、pthread_yield()等类似的玩意儿。
这种玩法来源于Windows的Sleep(0)的用法。看MSDN的原文:
This function causes a thread to relinquish the remainder of its time slice and become unrunnable for an interval based on the value of dwMilliseconds. The system clock "ticks" at a constant rate.
然而,Unix、Linux的sleep(0)并不是相同的玩意儿。连时间单位都不一样了,俩API怎能相同。
傻。 就你是分析了sleep(0) 是直接返回,什么也不是了。 勇芳软件 发表于 2018-6-10 17:57
就你是分析了sleep(0) 是直接返回,什么也不是了。
论大小写。Sleep(0)与sleep(0) Sleep(0)与sleep(0) 不同吗? 勇芳软件 发表于 2018-6-10 19:16
Sleep(0)与sleep(0) 不同吗?
你没看帖子?Sleep(0)是Windows多线程切时间片用的写法,sleep(0)是Windows转Linux的开发者想当然写出的逗比写法。
页:
[1]