Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用sched_setaffinity清除线程关联,这意味着我想将控制权交还给内核?_Java_Linux_Kernel_Real Time_Jna - Fatal编程技术网

Java 如何使用sched_setaffinity清除线程关联,这意味着我想将控制权交还给内核?

Java 如何使用sched_setaffinity清除线程关联,这意味着我想将控制权交还给内核?,java,linux,kernel,real-time,jna,Java,Linux,Kernel,Real Time,Jna,我到处看了看,但似乎做不到。我试图避免的是: “通过fork(2)创建的子级继承其父级的CPU关联掩码。” 来源:您只需将关联设置回“所有可用处理器” 一种选择可能是计算所有逻辑处理器的数量并使用该位掩码,但这可能更容易,因为其中包括以下有用的注释(我的重点): 在调用sched_setaffinity()之后,在其上 当中指定的集合相交时,进程将实际运行 掩码参数和系统上实际存在的CPU集。 系统可能进一步限制进程所在的CPU集 如果正在使用cpuset(7)中描述的“cpuset”机制,则运

我到处看了看,但似乎做不到。我试图避免的是:

“通过fork(2)创建的子级继承其父级的CPU关联掩码。”


来源:

您只需将关联设置回“所有可用处理器”

一种选择可能是计算所有逻辑处理器的数量并使用该位掩码,但这可能更容易,因为其中包括以下有用的注释(我的重点):

在调用sched_setaffinity()之后,在其上 当中指定的集合相交时,进程将实际运行 掩码参数和系统上实际存在的CPU集。 系统可能进一步限制进程所在的CPU集 如果正在使用cpuset(7)中描述的“cpuset”机制,则运行。 这些限制是对进程将在其上运行的实际CPU集的限制 内核以静默方式强制运行


因此,您只需发送一个位掩码
0xffff…
,方便地说,它是整数
-1
。我建议使用
long
值-1,但如果您知道您的系统的处理器少于32个,则可以使用
int

将affinity设置回“所有可用处理器”

一种选择可能是计算所有逻辑处理器的数量并使用该位掩码,但这可能更容易,因为其中包括以下有用的注释(我的重点):

在调用sched_setaffinity()之后,在其上 当中指定的集合相交时,进程将实际运行 掩码参数和系统上实际存在的CPU集。 系统可能进一步限制进程所在的CPU集 如果正在使用cpuset(7)中描述的“cpuset”机制,则运行。 这些限制是对进程将在其上运行的实际CPU集的限制 内核以静默方式强制运行


因此,您只需发送一个位掩码
0xffff…
,方便地说,它是整数
-1
。我建议使用
long
值-1,但是如果您知道您的系统的处理器少于32个,那么您可以使用
int

,您不清楚自己在问什么。您添加了
java
jna
标记,所以您想在java中这样做吗?你试过什么?您不能“清除”它,您只能将其设置为其他值,尽管可以将其设置为“所有可用处理器”。在你第一次改变它之前,你有没有记录它是什么?这就是答案!非常感谢!很乐意帮忙。我在回复中转载了一个更详细的版本,不清楚你在问什么。您添加了
java
jna
标记,所以您想在java中这样做吗?你试过什么?您不能“清除”它,您只能将其设置为其他值,尽管可以将其设置为“所有可用处理器”。在你第一次改变它之前,你有没有记录它是什么?这就是答案!非常感谢!很乐意帮忙。我在答复中转载了该评论的更详细版本。