其实就是没法保证,但是只有CPU有空闲,时间精度还是可以保证的。
另外你对时间片有一个误解,先不说时间片是20毫秒,这个数字的准确性,就假定是20毫秒。并不是每个线程每次都需要把20毫秒用完才让出CPU,
例如网络线程,可能刚被调度到运行状态,一毫秒都没运行到,就调用了一个recv,此时线程就又把CPU让出去了,进入等待io状态。
例如计算线程, CPU性能足够好,运行了三毫秒,计算任务就完成了,此时主动让出CPU(比如,调用sleep)。