【问题标题】:Pinning pthreads memory and cpu固定 pthreads 内存和 cpu
【发布时间】:2011-03-28 12:09:47
【问题描述】:

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

我也在固定主进程的内存。在创建 pthread 之前调用 mlockall(MCL_CURRENT|MCL_FUTURE) 是否也会锁定 pthread 使用的所有内存,还是我需要在每个 pthread 中再次调用它?

提前致谢。

【问题讨论】:

    标签: c pthreads


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在 linux 上你有 pthread_attr_setaffinity_np,但 np 表示这是不可移植,也就是一个扩展。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-11
        • 1970-01-01
        • 2013-10-06
        • 2011-11-06
        • 1970-01-01
        • 2013-10-16
        • 2018-06-01
        • 1970-01-01
        相关资源
        最近更新 更多