接下来我们看一下线程退出函数和等待函数。

#include <pthread.h>

void pthread_exit(void *value_ptr);

value_ptr:是线程的返回值。有pthread_join()检测获得。

功能:线程退出

#include<pthread.h>

int pthread_join(pthread_t thread, void**value_ptr);

功能:等待指定的线程结束。

返回值:成功返回0

参数:

thread:等待线程的ID(标示符)

value_ptr:用户自定义的指针,用来保存被等待线程的返回值。

这个函数是线程阻塞函数,调用它的函数将一直阻塞到被等待的线程结束为止,当函数返回值,被等待线程的资源被回收。

我们看个例子:

#include<stdio.h>

#include<stdlib.h>

void *th_fun1(void*arg)

{

int i=10/2;

printf("%s",arg);

while(i-->0)

fputs("new thread1\n",stdout);

pthread_exit ((void*)1);

}

void *th_fun2(void*arg)

{

int i=10/2;

printf("%s",arg);

while(i-->0)

fputs("new thread 2\n",stdout);

pthread_exit((void*)2);

}

int main()

{

int ret;

pthread_t tid1,tid2;

if((ret=pthread_create(&tid1,NULL,th_fun1,"new thread 1  created!\n"))==-1)

{

perror("pthread_createerror ");

exit(EXIT_FAILURE);

}

if((ret=pthread_create(&tid2,NULL,th_fun2,"new thread 2  created!\n"))==-1)

{

perror("pthread_createerror ");

exit(EXIT_FAILURE);

}

void *fret1;

void *fret2;

pthread_join(tid1,&fret1);

pthread_join(tid2,&fret2);

printf("fret1=%d\n",(int)fret1);

printf("fret2=%d\n",(int)fret2);

return 0;

}

pthread_join pthread_exit 线程 Linux函数 线程退出 线程等待相关推荐

  1. 网络编程(36)—— 线程安全函数和非线程安全函数

    今天研究下线程安全函数和非线程安全函数.什么是线程安全函数?我们知道在多线程编程中,线程安全问题是不容忽视的.只要存在多线程,就会存在多个线程访问同一段代码或者同一个全局变量的临界区,对于uc中标准函 ...

  2. python 在主线程开线程_Python开启线程,在函数中开线程的实例

    逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...

  3. python可以开多少线程_Python开启线程,在函数中开线程的实例

    逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...

  4. linux malloc 线程,Linux上的侧线程的malloc/calloc崩溃

    我正在用C写一个服务器 - 客户端应用程序,共享一些信息.服务器以双线程模式工作 - 主线程等待输入,而侧线程响应客户端的请求.客户端也是这样工作的,但它等待用户输入(来自stdin),并且如果它接收 ...

  5. linux中的进程与线程,linux中进程和线程的区别是什么

    linux中进程和线程的区别是:1.一个程序至少有一个进程,一个进程至少有一个线程:2.线程的划分尺度小于进程:3.进程在执行过程中拥有独立的内存单元,而多个线程共享内存. 进程与线程的定义 (推荐学 ...

  6. linux杀死指定进程中的线程,linux查看进程和线程的命令

    1.任务:获得进程信息 :ps命令,或者top命令,它能显示当前运行中进程的相关信息,包括进程的PID. ps命令能提供一份当前进程的快照.如果想状态可以自动刷新,可以使用top命令. 2.任务:获得 ...

  7. 【Linux 内核】进程优先级与调度策略 ③ ( 设置、获取线程优先级的核心函数 | 修改线程调度策略函数 )

    文章目录 一.设置.获取线程优先级的核心函数 二.修改线程调度策略函数 一.设置.获取线程优先级的核心函数 设置.获取 线程 优先级的 核心 函数 : ① 设置 " 创建线程 " ...

  8. Linux上线程开发API概要(线程)

    进程与线程       典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情.有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理 ...

  9. Linux系统编程---14(回收子线程,回收多个子线程,线程分离,杀死线程)

    回收子线程 pthread_join 函数 阻塞等待线程退出,获取线程退出状态 其作用,对应进程中 waitpid() 函数. int pthread_join (pthread_t thread,v ...

最新文章

  1. Core ML 文档翻译
  2. 悉尼科技大学入选 CVPR 2021 的 9 篇论文,都研究什么?
  3. 液晶12864COG 液晶模块串口/并口ST7565R带背3.3v 12864-14显示屏
  4. 突破安全狗防注入及上传的一些思路
  5. android界面布局题,【填空题】Android 系统中, 用于定义布局显示在界面上的风格。...
  6. Unity手游之路九自动寻路Navmesh之高级主题
  7. ABAP和XML数据格式互相转换的两种方式
  8. 构造函数和clone以及在继承中
  9. VUE3@clli组件样式、全局组件、配置打包
  10. unity android so热更,惊鸿哥的港湾
  11. SSH 上传下载文件
  12. C++学习笔记: 混合语言编程
  13. python弹球游戏移动球拍_python pygame实现挡板弹球游戏的代码
  14. linux系统论文题目大全_计算机应用专业毕业论文题目大全选题
  15. if前面加个#是什么意思?c++中#if与if的比较
  16. Go专家编程 timer、ticker
  17. dau、mau、pcu、dnu、wau、acu、uv分别是什么意思?
  18. Oracle OGG Kafka
  19. Navicat连接腾讯服务器时常见错误
  20. 2022暑期杭电第八场

热门文章

  1. 网页版Rstudio︱RStudio Server多人在线协作开发
  2. 树(2)-----leetcode(层、深度、节点)
  3. 面向对象封装的web服务器
  4. innodb_flush_log_at_trx_commit和sync_binlog参数详解
  5. Nginx+Tomcat部署Angular+javaweb项目(解决刷新404)
  6. 更改VMware硬盘大小
  7. ORACLE RAC运行在300G内存以上需要考虑的东西
  8. IOS的UITextField,UIButton,UIWebView它描述的一些属性和IOS提示图像资源
  9. 与众不同 windows phone (18) - Device(设备)之加速度传感器, 数字罗盘传感器
  10. 基于WinSvr2012共享文件夹的Hyper-V实时迁移之二文件服务器及迁移用虚拟机的创建...