当前位置: 首页 > news >正文

系统编程 day11 进程(线程)3

fork函数的总结:

总结对进程学习之中的回收函数wait

wait函数:

1.获取子进程的退出状态

2.回收资源------会让僵尸态的子进程销毁

注:1.wait函数本身是一个阻塞操作,会使调用者阻塞

2.父进程要获得子进程的退出状态

子进程:

exit函数(退出状态值)

退出状态值,只有最低8位有效(16进制的255)

父进程:

函数wait()

获取得到退出状态值

if(WIFEXITED())为真

WEXITSTATUS()再获得exit的退出状态值

waitpid函数:

功能:等待子进程状态发生变化

参数1:pid > 0

表示等待指定的子进程状态改变

pid = -1

表示等待所有子进程状态改变

参数2:wstatus:表示获取到子进程状态信息

参数3:options:可以不阻塞------不阻塞传宏WNOHANG,不传是默认为阻塞

wait(&wstatus) = waitpid(-1,&wstatus,0)

非阻塞调用:

waitpid(-1,&wstatus,WNOHANG)

非阻塞和阻塞:

1.阻塞:会影响父进程处理逻辑

2.非阻塞:父进程会去查看子进程状态发生改变,但是如果没有发生改变,父进程不阻塞,继续往下执行

非阻塞必须套在循环中处理      ====     轮询

小总结:

--------------------------------------------------------------------------------------------------------------------------------

多任务技术:线程

概述:

什么是线程:

线程------轻量级的进程

进程------重量级的进程

线程需要的资源少,创建的速度和效率比进程高

线程成为cpu执行的最小单元

进程成为资源分配的基本单位

线程的组成:

线程tid,程序计数器,寄存器集合,栈

线程与进程的关系:

a.线程是存在于进程之中的

b.线程共享了进程的资源

c.线程结束,不一定导致进程结束,反之,线程一定结束

线程的编程(类似于进程的编程):

1.线程的创建:

函数pthread_create

参数1:thread:线程tid

参数2:attr:线程属性,一般是NULL,表示默认属性(可结合性+分离属性)

可结合属性:手动回收

分离属性:系统自动回收

参数3:start_routine-------线程执行函数(线程回调函数)

(指向指针函数的函数指针)

是线程的回调函数,是线程的执行空间

参数4:arg,回调函数的参数

函数pthread_create 返回值:成功为0,失败为错误码

gcc时后必须加-lpthread

线程的退出:

函数pthread_exit()

功能:结束调用的线程

资源回收:

pthread_join()

功能:等待线程结束

参数1:thread------线程tid

参数2:retval------用来保存退出状态值所在空间的地址

函数

http://www.lryc.cn/news/423830.html

相关文章:

  • [ Python 原理分析 ]如何实现用户实现博客文章点赞-物联网Python
  • 【47 Pandas+Pyecharts | 杭州二手房数据分析可视化】
  • C++入门基础知识13
  • IP地址证如何实现HTTPS访问?(内网IP、公网IP)
  • 东土科技车规级网络芯片获批量应用
  • nvidia系列教程-AGX-Orin pcie扩展M.2磁盘调试笔记
  • haproxy七层代理知识点以及各种配置
  • uniapp自定义浮动图标、列表布局
  • 学习嵌入式入门(十)高级定时器简介及实验(下)
  • 使用python在不改变原有excel的格式下,修改指定单元格格式
  • MySQL数据库:详细安装与配置指南
  • python爬虫代理IP实战
  • 样式,常用组件
  • Django Project | 云笔记练习项目
  • Zookeeper的监听机制
  • Swift withAnimation 动画完成监听
  • 场外期权交易:找到适合你的那一款
  • Elasticsearch-使用java 批量插入文档
  • 【区块链+食品安全】农业产业全过程溯源云平台 | FISCO BCOS应用案例
  • 每日面试题Day2
  • 基于MyBatis-plus的SpringBoot开发
  • 网站数据导出为excel 源码大全java php c# js python 与网络安全兼顾-阿雪技术观
  • Python知识点21---怎么把你的Python项目打包成一个完整的结果物给别人提供
  • 关于#genesiscsheel#的问题,如何解决?
  • 无人机之如何避免飞行错误篇
  • 免费简单的制作3D卡通建模——Fuse软件和Readyplayer的使用介绍
  • 企业大模型业务架构技术选型分析
  • pyqt5 中python如何通过Qtwebchannel主动发消息给web前端
  • Java Web —— 第五天(请求响应2)
  • 数据科学 - 模型检验