cpu时间片如何细分

时间:2021-11-28 19:48:11
一般一个cpu时间片为20ms到30ms,在多线程编程里面,有时候这个数值还是太大了!
       是不是有什么函数,可以把时间片定义的更小一点呢?

10 个解决方案

#1


这是内核的事儿,你就当没有时间片就行了

#2


晕!
        如果不能把时间片分的更细,你如何保证多线程能及时响应?
比如一个时间片,就20ms,在这20ms里面,别的线程肯定就得不到响应了(除非频繁使用中断)!

 据说nt系统最小时间片是4ms,我们是不是有什么法子,在代码里面控制它的长短呢?

#3


如果事情做完了可以调用sleep waitforsingleobject......
这些函数将线程挂起

#4


WINDOWS本来就不是实时的系统,要求毫秒级的精确是很难做到的,系统中运行的线程越多,越不可能及时响应。看看WINDOWS核心编程吧。
说不定能让你的思路转一下^_^

#5


我不认为一个时间片是20-30ms,这时间显然长得不合理,应该会短得多

#6


up一下!
期待高手来讲解啊!

#7


20ms的时间片你嫌多啊? 靠!

  不知道楼主做这个有什么意义?我想在大多数程序来说,都没有修改时间片的需要。
时间片小了OS可能会在线程、进程间频繁的切换浪费CPU时间。
  再说,WINDOWS是抢占式的调度,一旦一个高级别的线程苏醒,它就会抢占低级别的线程时间片。除非在系统里头所有的程序都是同级别的,那么就轮次的方式执行,那么每个线程就会运行够20ms后才让出CPU时间。

#8


嗯,我就是碰到一个项目——优先级别是一样的,但每次处理都不需要20ms,我想把时间片再细分一点!

      不然我怕它根本响应不过来啊!

 我是听有个人说,时间片可以细分,最低到4ms的!

#9


你把你所有的线程优先级别调高一些处理就快一些。

#10


晕,怎么好像你们都没听懂啊!

 把优先级调高有什么用呢?

 我现在碰到的问题是:一个程序,有好多线程,要同时完成好多个任务——但每个任务,不需要花费一个时间片的时间,我想人为的把这个时间片分更小一点!

      不是什么优先级的问题!

#1


这是内核的事儿,你就当没有时间片就行了

#2


晕!
        如果不能把时间片分的更细,你如何保证多线程能及时响应?
比如一个时间片,就20ms,在这20ms里面,别的线程肯定就得不到响应了(除非频繁使用中断)!

 据说nt系统最小时间片是4ms,我们是不是有什么法子,在代码里面控制它的长短呢?

#3


如果事情做完了可以调用sleep waitforsingleobject......
这些函数将线程挂起

#4


WINDOWS本来就不是实时的系统,要求毫秒级的精确是很难做到的,系统中运行的线程越多,越不可能及时响应。看看WINDOWS核心编程吧。
说不定能让你的思路转一下^_^

#5


我不认为一个时间片是20-30ms,这时间显然长得不合理,应该会短得多

#6


up一下!
期待高手来讲解啊!

#7


20ms的时间片你嫌多啊? 靠!

  不知道楼主做这个有什么意义?我想在大多数程序来说,都没有修改时间片的需要。
时间片小了OS可能会在线程、进程间频繁的切换浪费CPU时间。
  再说,WINDOWS是抢占式的调度,一旦一个高级别的线程苏醒,它就会抢占低级别的线程时间片。除非在系统里头所有的程序都是同级别的,那么就轮次的方式执行,那么每个线程就会运行够20ms后才让出CPU时间。

#8


嗯,我就是碰到一个项目——优先级别是一样的,但每次处理都不需要20ms,我想把时间片再细分一点!

      不然我怕它根本响应不过来啊!

 我是听有个人说,时间片可以细分,最低到4ms的!

#9


你把你所有的线程优先级别调高一些处理就快一些。

#10


晕,怎么好像你们都没听懂啊!

 把优先级调高有什么用呢?

 我现在碰到的问题是:一个程序,有好多线程,要同时完成好多个任务——但每个任务,不需要花费一个时间片的时间,我想人为的把这个时间片分更小一点!

      不是什么优先级的问题!