#include <unistd.h>
#include <sys/types.h>
#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#define ERR_EXIT(m) \
do \
{ \
perror(m); \
exit(EXIT_FAILURE); \
}while(0); \
int main(void)
{
pthread_attr_t attr;
//初始化属性
pthread_attr_init(&attr);
int state;
//获取分离属性
pthread_attr_getdetachstate(&attr, &state);
if (state == PTHREAD_CREATE_DETACHED)
printf("detachstate:PTHREAD_CREATE_DETACHED\n");
else if (state == PTHREAD_CREATE_JOINABLE)
printf("detachstate:PTHREAD_CREATE_JOINABLE\n");
//获取栈大小
size_t size;
pthread_attr_getstacksize(&attr, &size);
printf("stacksize:%ld\n",size);
//获取栈溢出保护区大小
size_t guard;
pthread_attr_getguardsize(&attr, &guard);
printf("guardsize:%ld\n",guard);
//获取线程竞争范围
int scope;
pthread_attr_getscope(&attr, &scope);
if (scope == PTHREAD_SCOPE_SYSTEM)
printf("scope:PTHREAD_SOCPE_SYSTEM\n");
else if (scope == PTHREAD_SCOPE_PROCESS)
printf("scope: PTHREAD_SCOPE_PROCESS\n");
//获取调度策略
int policy;
pthread_attr_getschedpolicy(&attr, &policy);
if (policy == SCHED_FIFO)
printf("policy:SCHRD_FIFO\n");
else if (policy == SCHED_RR)
printf("policy:SCHED_RR\n");
else if (policy == SCHED_OTHER)
printf("policy:SCHED_OTHER\n");
//获取继承的调度策略
int inheritsched;
pthread_attr_getinheritsched(&attr, &inheritsched);
if (inheritsched == PTHREAD_INHERIT_SCHED)
printf("inheritsched:PTHREAD_INHERIT_SCHED\n");
else if (inheritsched == PTHREAD_EXPLICIT_SCHED)
printf("inheritsched: PTHREAD_EXPLICIT_SCHED\n");
//获取调度参数
struct sched_param param;
pthread_attr_getschedparam(&attr, ¶m);
printf("sched_priority:%d\n",param.sched_priority);
pthread_attr_destroy(&attr);
//获取并发级别
int level;
level = pthread_getconcurrency();
printf("level:%d\n",level);
return 0;
}
运行截图: