linux多线程的cpu绑定及继承

最近遇到一个问题,在子线程中修改main的cpu绑定成功,然后,fork子进程,观察新fork出来的子进程cpu绑定与父进程的修改后的cpu绑定不一致。

经过一番分析,找到了原因:

1)我们使用的线程库是nptl库;

2)在子线程中修改main的cpu绑定,只会修改main线程的cpu绑定,子线程本身的cpu绑定不会发生变化;

3)子线程中fork子进程,子进程继承到的cpu绑定关系来自于子线程。

所以,这个操作与预想不一致的根因,是想当然了。

相要达到子进程修改cpu绑定,可以采用如下方法:

1)先保证fork的主体cpu绑定修改OK,这个用例里面是子线程;

2)在子进程里面自己修改cpu绑定。

在印象中linux线程库,应该是可以使用案例操作OK的,有机会验证下。

你可能感兴趣的:(linux)