PTHREAD_ATTR_SETAFFINITY_NP - Linux手册页
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)。
Interface | Attribute | Value |
pthread_attr_setaffinity_np(),pthread_attr_getaffinity_np() | Thread safety | MT-Safe |
遵循规范
这些功能是非标准的GNU扩展。因此名称中的后缀" _np"(不可移植)。
备注
仅在glibc 2.3.3中,提供了这些函数的没有cpusetsize参数的版本。相反,分配给基础系统调用的CPU集大小始终为sizeof(cpu_set_t)。
另外参见
sched_setaffinity(2),pthread_attr_init(3),pthread_setaffinity_np(3),cpuset(7),pthreads(7)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。