固定pthreads内存和cpu

时间:2010-08-11 16:46:55

标签: c pthreads

我正在使用C开发一个项目,该项目要求线程运行在与初始进程不同的CPU上。我正在使用pthread库来创建这些线程。我使用sched_setaffinity将主进程固定到cpu。我可以为每个线程执行相同操作以将它们固定到单独的CPU上吗?

我也在掌握主要流程的记忆。在创建pthreads之前调用mlockall(MCL_CURRENT | MCL_FUTURE)是否会锁定pthreads使用的所有内存,或者我是否需要在每个pthread中再次调用它?

提前致谢。

2 个答案:

答案 0 :(得分:5)

在Linux上,您有pthread_attr_setaffinity_np,但由于np表示这是非便携式,也称为扩展程序。

答案 1 :(得分:3)

内存在进程中的所有线程之间共享,因此每个进程多次调用mlockall是没有意义的。

此外,内存由系统上的所有CPU共享。 mlockall API仅阻止操作系统将进程的内存页写入磁盘,而与将内存锁定到CPU无关。