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