pthread_attr_setaffinity_np函数用法详解
pthread_attr_setaffinity_np函数简介
- 头文件包含
#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 );
- 编译链接选项
-pthread
pthread_attr_setaffinity_np函数常见使用错误
- 链接错误
undefined reference to `pthread_attr_setaffinity_np'
解决办法:添加链接选项
-pthread
- 编译错误
warning: implicit declaration of function ‘pthread_attr_setaffinity_np’ [-Wimplicit-function-declaration]
解决办法:包含头文件
#include <pthread.h>
pthread_attr_setaffinity_np函数详细描述
pthread_attr_setaffinity_np ()函数将attr引用的thread attributes对象的CPU关联掩码属性设置为cpuset 中指定的值。该属性确定使用thread attributes对象attr 创建的线程的CPU关联掩码
pthread_attr_getaffinity_np ()函数返回cpuset 指向的缓冲区中attr引用的thread attributes对象的CPU关联掩码属性
参数cpusetsize是cpuset 指向的缓冲区的长度(以字节为单位)。通常,此参数将被指定为sizeof(cpu_set_t)
有关CPU关联掩码的更多详细信息,请参见sched_setaffinity (2)有关可用于操作和检查CPU集的一组宏的说明,请参见CPU_SET (3)
pthread_attr_setaffinity_np函数返回值
如果成功,这些函数返回0;错误时,它们返回一个非零错误号。
pthread_attr_setaffinity_np函数错误码
- 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 ())无法分配内存。
pthread_attr_setaffinity_np函数其他说明
仅在glibc2.3.3中,这些函数的版本没有cpusetsize参数。相反,给底层系统调用的CPU集大小总是sizeof(cpu_set_t)
评论区