0
点赞
收藏
分享

微信扫一扫

0基础学会 设置线程属性(内附C语言源码)

一叶随风_c94d 2022-03-21 阅读 73

以设置分离属性为例:

设置线程属性中的分离属性步骤如下

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()函数是一样的。

举报

相关推荐

0 条评论