C++ 将所有线程默认为一个核心?

C++ 将所有线程默认为一个核心?,c++,linux,pthreads,scheduler,centos6,C++,Linux,Pthreads,Scheduler,Centos6,我指定了一个具有核心2-11和任务集——cpu列表2的CPUSETX 似乎如果我运行一个任务集与cpuset X嵌套的进程,那么sched_getaffinity()只会看到core#2可用 我的问题是,有没有办法实现以下目标: -将进程中的所有线程默认为1个核心,并且 -该进程由cpuset“保护”(以便其他进程不会使用指定的核心集),并且 -我仍然可以通过编程方式设置某些线程的cpu亲缘关系(我知道如何使用pthread_attr_setaffinity_np()实现这一点) 提前感谢。让我

我指定了一个具有核心2-11和任务集——cpu列表2的CPUSETX

似乎如果我运行一个任务集与cpuset X嵌套的进程,那么sched_getaffinity()只会看到core#2可用

我的问题是,有没有办法实现以下目标:
-将进程中的所有线程默认为1个核心,并且
-该进程由cpuset“保护”(以便其他进程不会使用指定的核心集),并且
-我仍然可以通过编程方式设置某些线程的cpu亲缘关系(我知道如何使用pthread_attr_setaffinity_np()实现这一点)


提前感谢。

让我这样问你,你想让你的进程在其中一个内核上运行,并阻止任何其他进程在其上运行吗?在这种情况下,您应该参考命令
isolcpus


通过在引导期间使用参数
isolcpus
,您可以将一个或多个CPU与内核调度器隔离,除非进程/线程请求使用CPU亲缘关系来使用隔离的CPU。(请同时参阅-

sched_getaffinity
仅报告当前的cpuset,即2。您是否尝试过将affinity设置为0xFFFFFF(使用
sched_setaffinity
),然后获取cpuset?在调用sched_getaffinity()之前,我没有尝试调用sched_setaffinity()。有没有一种方法可以将所有线程默认为1个核心,然后在一个CPUset中设置我关心的线程的亲和力?在一个有15年历史的单核奔腾设备上运行你的应用程序。