我陷入了线程问题的中间,特别是涉及时间问题。我知道Thread.wait,Thread.notify,Thread.sleep,Thread.yield和LockSupport.parkXXX。是否有其他方法可用于影响线程执行的时间?
我希望得到类似收益的东西,但更理想的是有更好的控制。
有没有办法保护os正在使用的调度程序的信息?我的意思是它正常分配的切片,控制一个多个线程的切片持续时间等...
我希望在没有活动(忙)等待的情况下获得微秒级分辨率。有没有办法甚至使用空闲操作代码/系统功能进行等待?
PS:我会问C一个类似的问题。
答案 0 :(得分:0)
Linux和大多数操作系统的最小时间片为0.1 ms或1 / 10,000秒。
如果你想完全控制一个CPU,我建议忙着等待隔离的CPU关闭中断,尽管你会看到一些10-40微秒的抖动。如果您不忙于在隔离的CPU上等待,您可以看到大约5 - 50 ms的抖动。在虚拟机上,50毫秒的抖动非常普遍。
您可以使用MicroJitterSampler在您的计算机上对此进行测试。如果您没有该库,您可以注释掉亲和线(尽管如上所述,您会看到很多噪音)