多核处理器中的线程

时间:2010-08-16 11:50:48

标签: c linux multithreading

我用C编写了一个程序,我只想在另一个处理器核心中运行一个函数。

有谁知道如何在不同的核心上分配线程?在一个核心上运行的单个运行线程是否有时可以使用另一个核心,具体取决于核心的繁忙程度?

2 个答案:

答案 0 :(得分:5)

我相信您正在寻找设置亲和力功能。

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.

查看this thread,其中讨论了为特定线程设置亲和力的用法。 摘自这篇帖子:

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.

答案 1 :(得分:2)

我认为您在询问如何在多处理器CPU中的不同处理器上运行线程?如果是这样,我的理解是这是由操作系统控制的。看一下这个SO question