以设置分离属性为例:
设置线程属性中的分离属性步骤如下
1、 pthread_attr_t attr ; 创建一个线程属性结构体变量
2、 pthread_attr_init(&attr); 初始化线程属性
(可以没有) pthread_attr_getdetachstate(const pthread_attr_t *attr,int *detachstate);
获取线程分离状态属性
3、 pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);设置线程属性为 分离态
4、 pthread_create(&tid,&attr,tfn,NULL);借助修改后的 设置线程属性 创建为分离态的新线程
5、 pthread_attr_destroy(&attr); 销毁线程属性
用代码实现为:
1 #include <unistd.h>
2 #include <stdio.h>
3 #include <string.h>
4 #include <stdlib.h>
5 #include <unistd.h>
6 #include <pthread.h>
7 void *tfn(void *arg)
8 {
9 printf("child pthread:%ld\n",pthread_self());
10 pthread_exit(NULL);
11 }
12 int main()
13 {
14 pthread_attr_t attr;
15 pthread_attr_init(&attr);//初始化线程属性
16 pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);//设置为分离态
17 pthread_t tid;
18 int ret=pthread_create(&tid,&attr,tfn,NULL);//创建线程
19 if(ret!=0)
20 {
21 printf("error info:%s\n",strerror(ret));
22 exit(0);
23 }
24 printf("child:%ld,main:%ld\n",tid,pthread_self());
25 size_t size;
26 pthread_attr_getstacksize(&attr,&size);//获取线程大小
27 printf("stack size:%ld\n",size);
28 pthread_attr_destroy(&attr);//销毁线程
29
30 pthread_exit(NULL);
31 }
运行结果为:
目前只是示例阶段,其作用只是跟pthread_detach()函数是一样的。