far*_*rka 3 c linux multithreading
我用C编写了一个程序,我只想在另一个处理器核心中运行一个函数.
有谁知道如何在不同的核心上分配线程?在一个核心上运行的单个运行线程是否有时可以使用另一个核心,具体取决于核心的繁忙程度?
我相信您正在寻找set affinity功能.
Processor affinity is a modification of the native central queue scheduling
algorithm in a symmetric multiprocessing operating system. Each task
(be it process or thread) in the queue has a tag indicating its
preferred / kin processor. At allocation time, each task is allocated to
its kin processor in preference to others.
Run Code Online (Sandbox Code Playgroud)
查看此线程,讨论设置与特定线程的亲和性的用法.摘自此主题:
int sched_setaffinity(pid_t pid,size_t cpusetsize,cpu_set_t *mask);
Passing 0 as the pid, and it'll apply to the current thread only, or have other
thread report their kernel pid with the linux specific call pid_t gettid(void);
and pass that in as the pid.
Run Code Online (Sandbox Code Playgroud)