Thread in a multi-core processor

I wrote a program in C, and I just need only one function working in a different processor core.

Does anyone know how to distribute threads on different cores? Can one running thread run on one core, sometimes it can use another kernel, depending on how busy the kernels are?

+3
source share
2 answers

I believe that you are looking for installed binding functionality.

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.

Check out this thread that discusses the use of thread specific bindings. Excerpts from this topic:

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.
+5
source

, , ? , , , . SO.

+2

Source: https://habr.com/ru/post/1759865/


All Articles