首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用所有线程默认值的核心关联

禁用所有线程默认值的核心关联
EN

Stack Overflow用户
提问于 2015-11-04 07:36:34
回答 1查看 635关注 0票数 0

我在我的应用程序中使用ffmpeg,它在内部产生了很多线程。然而,我希望我的应用程序具有实时语义,它本身有一个cpu核心。因此,基本上,我需要一种方法来禁用调度ffmpeg产生的线程到一个核心,并设置我的主线程与该核心的亲和力。

这个是可能的吗?

例如:

代码语言:javascript
复制
main()
{
    struct sched_param param;
    param.sched_priority = 95;
    sched_setscheduler(getpid(), SCHED_FIFO, &param);

    int core_id = 0;

    // TODO: Remove core_id from cpuset for all future thread default affinities.

    pthread_t ffmpeg_thread;
    pthread_create(&ffmpeg_thread, NULL, run_ffmpeg, NULL);

    pthread_t rt_thread;
    pthread_create(&rt_thread, NULL, run_rt, NULL);

    cpu_set_t rt_cpuset;
    CPU_ZERO(&rt_cpuset);
    CPU_SET(core_id, &rt_cpuset);
    pthread_setaffinity_np(rt_thread, sizeof(rt_cpuset), &rt_cpuset);

    pthread_join(ffmpeg_thread, NULL);
    pthread_join(rt_threadm, NULL);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-04 09:17:57

线程从调用线程继承它们的亲缘关系。

请参阅创建

特定于Linux的详细信息,新线程继承调用线程的功能集(参见功能(7))和CPU关联掩码(参见sched_setaffinity(2))的副本。

因此,只要根据需要为两个线程设置关联,就会导致任何额外生成的线程继承它们的亲缘关系。能做我想做的事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33516163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档