急问:linux时间片及线程调度相关的问题?
各位大牛,急问下面问题,希望大家踊跃发言,分不够可以再给。
1. 在Linux 2.6上,怎么能够让一个线程每隔1ms起来运行一次?
我自己试用过以下两种方法,但结果不是很好,通过protype测试,大部分时间间隔是在1ms左右,但是总是有一部分时间间隔在好几个ms的级别,有的甚至是10ms以上。
(1)用settimer,interval为1000us;
(2)建立一个高优先级的线程,线程包括"需要执行的工作"和一个usleep来实现。这个usleep就是用来实现联系两次被调度上来的时间间隔是1ms。
所以,我想请教高手,
1.如何在用户层实现准确的1ms的timer或者是能够让一个线程能够每隔1ms起来执行一次?
2.在用户面,多线程的切换开销是多大?每个线程得到CPU后,执行的时间片是多长?
3.线程的调度策略是什么样的?能用pthread实现嘛?
在此谢过了!