#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; }
运行截图: