固定pthreads内存和CPU
问题描述:
我正在处理C中的一个项目,该项目要求线程在独立的CPU上运行,而不是初始化过程。我正在使用pthread库来创建这些线程。我使用sched_setaffinity将主进程固定到一个cpu。我可以对每个线程执行相同的操作,将它们固定到独立的CPU上吗?固定pthreads内存和CPU
我也固定主流程的记忆。在创建pthreads之前,是否会调用mlockall(MCL_CURRENT | MCL_FUTURE)来固定pthreads使用的所有内存,或者是否需要在每个pthread中再次调用它?
在此先感谢。
答
在Linux上你有pthread_attr_setaffinity_np
,但作为np
结果表明是非便携式又名延伸。
答
内存在进程中的所有线程之间共享,因此每个进程调用mlockall不止一次是没有意义的。
此外,内存由系统上的所有CPU共享。 mlockall API只能防止操作系统将进程的内存页面写入磁盘,并且与将内存锁定到CPU无关。