int pthread_attr_init(pthread_attr_t *attr);
int pthread_attr_destory(pthread_attr_t *attr);
获取与设置分离属性
#include <pthread.h>
int pthread_attr_getdetachstate(const pthread_attr_t *attr,
int *detachstate);
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
detachstate:PTHREAD_CREATE_DETACHED/PTHREAD_CREATE_JOINABLE(默认)
获取和设置栈大小
#include <pthread.h>
int pthread_attr_getstacksize(const pthread_attr_t *restrict attr,
size_t *restrict stacksize);
int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);
获取与设置栈移出保护区大小
#include <pthread.h>
int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);
int pthread_attr_getguardsize(const pthread_attr_t *attr, size_t *guardsize);
获取与设置线程竞争范围
#include <pthread.h>
int pthread_attr_getscope(const pthread_attr_t *restrict attr,
int *restrict contentionscope);
int pthread_attr_setscope(pthread_attr_t *attr, int contentionscope);
contentionscope值
说明
PTHREAD_SCOPE_SYSTEM
indicating a scheduling contention scope that is system-wide
PTHREAD_SCOPE_PROCESS
which indicates a process scheduling contention scope.
获取与设置调度策略
#include <pthread.h>
int pthread_attr_getschedpolicy(const pthread_attr_t *restrict attr,
int *restrict policy);
int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);
policy
说明
SCHED_FIFO
先进先出
SCHED_RR
抢占
SCHED_OTHER
默认
获取与设置继承的调度策略
#include <pthread.h>
int pthread_attr_getinheritsched(const pthread_attr_t *restrict attr,
int *restrict inheritsched);
int pthread_attr_setinheritsched(pthread_attr_t *attr, int inheritsched);
inheritsched
说明
PTHREAD_INHERIT_SCHED
Indicates that the newly created thread should inherit all it’s scheduling related attributes from it’s creating thread. It ignores the values of the relevant attributes within the attr argument.(默认值)
PTHREAD_EXPLICIT_SCHED
Indicates that the newly created thread should set it’s scheduling related attributes based on attr argument.
获取与设置调度参数
#include <pthread.h>
int pthread_attr_getschedparam(const pthread_attr_t *restrict attr,
struct sched_param *restrict param);
int pthread_attr_setschedparam(pthread_attr_t *restrict attr,
const struct sched_param *restrict param);
struct sched_param { int sched_priority; char __opaque[__SCHED_PARAM_SIZE__]; };
sched_prio