linux多线程的cpu绑定及继承

本文分析了在子线程中修改主线程CPU绑定后,新fork出的子进程CPU绑定不一致的问题。揭示了子线程fork子进程时,子进程继承的是子线程的CPU绑定,而非修改后的主线程绑定。并提供了两种解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近遇到一个问题,在子线程中修改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的,有机会验证下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值