PTHREAD_ATTR_SETAFFINITY_NP - Linux手册页

时间:2019-08-20 18:01:01  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2017-09-15

名称

pthread_attr_setaffinity_np,pthread_attr_getaffinity_np-在线程属性对象中设置/获取CPU亲和力属性

语法

#define _GNU_SOURCE             /* See feature_test_macros(7) */
#include <pthread.h>

int pthread_attr_setaffinity_np(pthread_attr_t *attr,
                   size_t cpusetsize, const cpu_set_t *cpuset);
int pthread_attr_getaffinity_np(const pthread_attr_t *attr,
                   size_t cpusetsize, cpu_set_t *cpuset);

Compile and link with -pthread.

说明

pthread_attr_setaffinity_np()函数将attr引用的线程属性对象的CPU亲和力掩码属性设置为cpuset中指定的值。此属性确定使用线程属性对象attr创建的线程的CPU亲和力掩码。

pthread_attr_getaffinity_np()函数返回cpuset指向的缓冲区中attr所引用的线程属性对象的CPU亲和力掩码属性。

参数cpusetsize是cpuset指向的缓冲区的长度(以字节为单位)。通常,此参数将指定为sizeof(cpu_set_t)。

有关CPU亲和力掩码的更多详细信息,请参见sched_setaffinity(2)。有关可用于操作和检查CPU集的一组宏的说明,请参见CPU_SET(3)。

返回值

成功时,这些函数返回0;否则,返回0。错误时,它们返回非零错误号。

错误说明

EINVAL
(pthread_attr_setaffinity_np())cpuset指定的CPU超出了内核支持的范围。 (内核配置选项CONFIG_NR_CPUS定义了用于表示CPU集的内核数据类型支持的集的范围。)
EINVAL
(pthread_attr_getaffinity_np())attr引用的线程属性对象的相似性掩码中的CPU超出cpusetsize指定的范围(即,cpuset / cpusetsize太小)。
ENOMEM
(pthread_attr_setaffinity_np())无法分配内存。

版本

从2.3.4版开始,这些功能由glibc提供。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
pthread_attr_setaffinity_np(),pthread_attr_getaffinity_np()Thread safetyMT-Safe

遵循规范

这些功能是非标准的GNU扩展。因此名称中的后缀" _np"(不可移植)。

备注

仅在glibc 2.3.3中,提供了这些函数的没有cpusetsize参数的版本。相反,分配给基础系统调用的CPU集大小始终为sizeof(cpu_set_t)。

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/