pthread_setaffinity_np(3) Library Functions Manual pthread_setaffinity_np(3) pthread_setaffinity_np, pthread_getaffinity_np - / POSIX (libpthread, -lpthread) #define _GNU_SOURCE /* feature_test_macros(7) */ #include int pthread_setaffinity_np(pthread_t thread, size_t cpusetsize, const cpu_set_t *cpuset); int pthread_getaffinity_np(pthread_t thread, size_t cpusetsize, cpu_set_t *cpuset); pthread_setaffinity_np() thread , cpuset. cpuset, . pthread_getaffinity_np() thread , cpuset. sched_setaffinity(2). , , CPU_SET(3). cpusetsize ( ), cpuset. , sizeof(cpu_set_t) ( , , CPU_SET(3)). 0; . EFAULT . EINVAL (pthread_setaffinity_np()) mask , , , <>, cpuset(7). EINVAL (pthread_setaffinity_np()) cpuset , ( CONFIG_NR_CPUS , , ). EINVAL (pthread_getaffinity_np()) cpusetsize , . ESRCH thread . attributes(7). +----------------------------+----------------------------------------------------------+--------------------------+ | | | | +----------------------------+----------------------------------------------------------+--------------------------+ |pthread_setaffinity_np(), | | MT-Safe | |pthread_getaffinity_np() | | | +----------------------------+----------------------------------------------------------+--------------------------+ GNU, <<_np>> (nonportable) . glibc 2.3.4. glibc 2.3.3 cpusetsize. , , sizeof(cpu_set_t). pthread_setaffinity_np() , , cpuset , . , , <>, cpuset(7). , , . sched_setaffinity(2) sched_getaffinity(2). , pthread_create(3), . pthread_setaffinity_np() 0 7 ( ), pthread_getaffinity_np() . #define _GNU_SOURCE #include #include #include #include #include int main(void) { int s; cpu_set_t cpuset; pthread_t thread; thread = pthread_self(); /* Set affinity mask to include CPUs 0 to 7. */ CPU_ZERO(&cpuset); for (size_t j = 0; j < 8; j++) CPU_SET(j, &cpuset); s = pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset); if (s != 0) errc(EXIT_FAILURE, s, "pthread_setaffinity_np"); /* Check the actual affinity mask assigned to the thread. */ s = pthread_getaffinity_np(thread, sizeof(cpuset), &cpuset); if (s != 0) errc(EXIT_FAILURE, s, "pthread_getaffinity_np"); printf("Set returned by pthread_getaffinity_np() contained:\n"); for (size_t j = 0; j < CPU_SETSIZE; j++) if (CPU_ISSET(j, &cpuset)) printf(" CPU %zu\n", j); exit(EXIT_SUCCESS); } sched_setaffinity(2), CPU_SET(3), pthread_attr_setaffinity_np(3), pthread_self(3), sched_getcpu(3), cpuset(7), pthreads(7), sched(7) () Alexey, Azamat Hackimov , kogamatranslator49 , Darima Kogan , Max Is , Yuri Kozlov , Kirill Rekhov ; GNU (GNU General Public License - GPL, 3 ) , - . - , , () () () <>. Linux 6.15 17 2025 . pthread_setaffinity_np(3)