线程操作——创、取、终、分、连

线程相关函数

在这里插入图片描述
main函数执行的线程叫主线程(main线程),其余创建出来的叫子线程。

线程创建

在这里插入图片描述
这是子线程:
在这里插入图片描述

这是主线程(main线程):
在这里插入图片描述

注意:

线程是第三方的库,编译的时候需要指定库名称
报错如下:
在这里插入图片描述
/tmp/ccYjRary.o:在函数‘main’中:
main.c:(.text+0x65):对‘pthread_create’未定义的引用
collect2: error: ld returned 1 exit status

解决方法:
gcc main.c -o App -l pthread
在这里插入图片描述

线程终止

在这里插入图片描述
在这里插入图片描述

线程ID获取

线程号在ubuntu下是无符号长整型,%ld
在这里插入图片描述

线程比较

在这里插入图片描述

连接终止线程——回收资源

回收子线程资源,解决僵尸线程问题。
阻塞函数。
在这里插入图片描述

//线程
void * callback2(void * arg)
{
    int a = 10;
    printf("i am a thread, the num is:%d\n", *(int *)arg+2);
    pthread_exit(&a);
}
//连接终止线程并获取返回值
int **val;
pthread_join(tid, (void **) val);
printf("val is : %d\n", **val);
两种写的方式——这个好点
int *val;
pthread_join(tid, (void **) &val);
printf("val is : %d\n", *val);

线程分离——终止后自动回收资源

自动释放资源给系统
在这里插入图片描述
==注意:==设置分离后,再对相同的子线程进行join连接会出错。分离后就不要进行连接了。

线程取消——中途终止

调用后线程不是立刻终止。
系统调用到取消点时才会终止取消的线程(可以用man pthreads查看)
在这里插入图片描述
粗略的理解为从用户区到内核区的切换,这个位置称为取消点。
注意:线程取消后不会自动释放资源,需要进行连接终止线程(pthread_join(tid, NULL)),若线程已调用线程分离,则无需连接终止线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猛笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值