线程属性相关函数的使用(笔记)

#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;
}

运行截图:


猜你喜欢

转载自blog.csdn.net/qq_34938530/article/details/80205516
今日推荐