Dav*_*ave 61 java multithreading scheduling setthreadaffinitymask
有没有人知道如何将Java进程中的各个线程锁定到特定的CPU内核(在Linux上)?我在C中完成了这个,但是在Java中找不到如何做到这一点.我的直觉是这需要一个JNI电话,但我希望这里有人可能有一些见解或者可能以前做过.
谢谢!
Beg*_*moT 44
你不能在纯java中做到这一点.但是如果你真的需要它 - 你可以使用JNI调用完成这项工作的本机代码.这是开始的地方:
http://ovatman.blogspot.com/2010/02/using-java-jni-to-set-thread-affinity.html
http://blog.toadhead.net/index.php/2011/01/22/cputhread-affinity-in-java/
UPD:经过一番思考,我决定为此创建自己的类:ThreadAffinity.java它是基于JNA的,非常简单 - 所以,如果你想在生产中使用它,可能你应该花一些时间制作它更稳定,但对于基准测试和测试,它的工作原理很好.
UPD 2:在java中有另一个用于处理线程亲和性的库.它使用与前面提到的相同的方法,但有另一个接口
我知道已经有一段时间了,但如果有人遇到这个帖子,我就是这样解决这个问题的.我写了一个脚本,可以执行以下操作:
| 归档时间: |
|
| 查看次数: |
28618 次 |
| 最近记录: |