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

系统编程中线程

一、线程的定义与作用

定义:线程是轻量级的进程,线程属于某个进程。

作用:并发,和进程相同。相对比较耗时的任务。

特征:1.进程是系统中最小的资源分配单位。

2.线程是系统最小的执行单位。

3.进程中,线程与线程是平级关系。

4.在进程中,默认有一个线程,即主线程。

二、线程与进程的区别

特性

维度

进程线程
资源共享性资源独立,进程间默认不共享同一进程内的线程共享进程资源
稳定性稳定性高,单个进程崩溃不会影响其他进程稳定性低,同一进程内的任一线程崩溃会导致整个进程终止

创建

开销

开销极大,需要独立创建3GB虚拟地址空间开销极小,仅需在所属进程空间内开辟独立栈区(8MB)
并发度并发度低并发度高

三、线程编程步骤

创建多线程->线程空间操作->线程资源回收(线程退出后,默认栈区不释放)

四、查看线程信息的命令

ps -eLf ps -eLo pid,ppid,lwp,stat,comm

五、线程相关函数

//功能:该函数可以创建指定的一个线程

参数:thread 线程id,需要实现定义并由该函数返回。
attr 线程属性,一般是NULL,表示默认属性。
start_routine 指向指针函数的函数指针。本质上是一个函数的名称即可。称为th回调函数,是线程的执行空间。
arg 回调函数的参数,即参数3的指针函数参数。

返回值:成功 0; 失败 错误码

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);

//功能:获得当前线程的id号

参数:无

返回值:成功 返回当前线程的线程id 失败 非0值。

pthread_t pthread_self(void); unsigned long int;

//功能:子线程自行退出

参数:retval 线程退出时候的返回状态

返回值:无

void pthread_exit(void *retval);

//功能:请求结束一个进程

参数:thread请求结束一个线程的tid

返回值:成功 0 失败 非0值

int pthread_cancel(pthread_t thread);

//功能:通过该函数可以将指定的线程资源回收,该函数具有阻塞等待功能,如果指定的进程没有结束,则回收线程阻塞

参数:threa 要回收的子线程tid retval 要回收的子线程返回值/状态

返回值:成功 0 失败 非0值

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

分离属性:给某个线程设置的属性,如果线程设置了这个属性,那么,线程在退出后,相关资源(栈区)会被系统回收,原来创建者,就不能回收了

目的线程消亡,自动回收空间

//功能:设置分离属性

参数:线程id号,填自己的id

返回值:成功 0 失败 非0值

int pthread_deatch(pthread_t thread);
http://www.jsqmd.com/news/101272/

相关文章:

  • LC实战项目一:元器件下单(六)
  • STM32F103 各定时器通道和IO对应表
  • PyJWT与Django实战:从零构建现代化认证系统
  • 百度网盘极速下载方案:告别限速困扰的完整指南
  • 2025 最新延吉必吃韩式烤肉餐厅TOP5 评测!服务、环境等全方位评测 - 全局中转站
  • 20251216 之所思 - 人生如梦
  • 显卡驱动终极清理方案:Display Driver Uninstaller完整使用指南
  • 2025 最新延吉必吃本地美食餐厅TOP5 评测!品质优先 + 性价比高,本地人推荐口碑权威榜单发布,味蕾盛宴尽在此处 - 全局中转站
  • 第四次算法作业
  • LobeChat能否对接GitHub?代码仓库智能搜索与建议
  • cyh_蓝桥杯python学习系列一算法基础
  • AI虚拟房地产架构关键步骤解析:架构师规避项目风险的7个方法!
  • 微信朋友圈营销转化,5个技巧轻松提升销售额
  • ComfyUI-Manager插件管理完整指南:从零开始掌握AI绘画工具管理
  • 小爱音箱AI升级终极指南:三步打造你的智能语音管家
  • 哔哩下载姬完整使用指南:轻松掌握B站视频高效下载技巧
  • 人工智能之数字生命---绘画能力的生成3
  • 人工智能之数字生命---绘画能力的生成3
  • 如何设计吸引眼球的放假通知图片
  • TPFanCtrl2终极指南:让你的ThinkPad风扇智能又安静
  • .net FileStream加密
  • LobeChat如何帮助初创公司快速上线AI产品原型?
  • 力扣(LeetCode) 35: 搜索插入位置 - 解法思路
  • 软件工程学习日志2025.12.16
  • 终极指南:用Applite轻松实现macOS应用管理的完整方案
  • 浏览器端多模态AI处理架构:本地化推理的技术实现路径
  • 小红书数据采集全攻略:xhs工具深度解析与应用实践
  • 黑天鹅养殖技术性价比高的公司
  • Bypass Paywalls Clean完整使用教程:轻松解锁付费新闻的实用方案
  • 人工智能之数字生命---绘画能力的生成2