尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Linux系统编程——线程

Linux系统编程——线程
📅 发布时间:2026/6/19 6:07:41

目录

一、线程的基本概念

二、进程与线程的核心区别对比

三、POSIX 线程编程:必备核心函数

1.创建线程:pthread_create()

2.获取自身 ID:pthread_self()

3.主动退出:pthread_exit()

4. 取消线程:pthread_cancel()

四、线程资源别漏收:两种回收方式

1.阻塞式回收:pthread_join()

2.分离式回收:pthread_detach()

五、小工具:查看线程信息的命令


一、线程的基本概念

  • 概论:线程是 “轻量级进程”,它不能独立存在,必须依附于某个进程(进程是线程的 “资源容器”)。
  • 作用:实现并发处理—— 比如一个程序要同时下载文件 + 显示进度,用线程分任务比开多个进程更高效。
  • 核心特征:
    • 进程是 “最小资源分配单位”(系统给进程分配内存、文件描述符);线程是 “最小执行单元”(CPU 实际调度的是线程)。
    • 同一进程内的线程是 “平级关系”,仅默认存在一个 “主线程”(进程启动后自动创建的第一个线程)。

二、进程与线程的核心区别对比

对比项进程线程
资源关系资源完全独立共享进程资源(仅栈区独立)
稳定性单个进程崩溃不影响其他单个线程崩溃→整个进程挂掉
创建开销大(需分配约 3GB 空间)小(仅开辟 8MB 栈区)
并发度较低(资源重)更高(轻量可开更多)

三、POSIX 线程编程:必备核心函数

1.创建线程:pthread_create()

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
  • 作用:创建一个新线程
  • 关键参数:
    • thread:存储新线程 ID 的变量地址
    • start_routine:线程要执行的函数(线程的 “入口逻辑”)
    • arg:传给 start_routine 的参数
  • 返回值:0 = 成功,非 0 = 失败(返回错误码)

2.获取自身 ID:pthread_self()

pthread_t pthread_self(void);
  • 作用:获取当前线程的 ID
  • 用法:无需传参,直接返回线程 ID(打印格式用 %lu)

3.主动退出:pthread_exit()

void pthread_exit(void *retval);
  • 作用:线程主动结束自身执行
  • 参数 retval:线程的 “返回状态”(可被后续回收操作获取)

4. 取消线程:pthread_cancel()

int pthread_cancel(pthread_t thread);
  • 作用:请求结束指定线程
  • 参数 thread:要取消的线程 ID,返回 0 = 成功

四、线程资源别漏收:两种回收方式

1.阻塞式回收:pthread_join()

int pthread_join(pthread_t thread, void **retval);
  • 作用:等待指定线程结束,并回收其资源
  • 特点:调用该函数的线程会 “阻塞”(暂停执行),直到目标线程结束
  • 参数 retval:存储目标线程的返回状态(对应 pthread_exit 的参数)

2.分离式回收:pthread_detach()

  • 作用:给线程设置 “分离属性”
  • 特点:线程结束后,系统自动回收其资源,无需创建者干预(但创建者后续无法操作该线程)
  • 适用场景:不需要获取线程返回值的场景

五、小工具:查看线程信息的命令

  • ps -eLo pid,ppid,lwp,stat,comm:查看线程的 PID、父进程 ID、线程 ID、状态、关联命令
  • ps -elf:查看更详细的进程 / 线程信息

相关新闻

  • Molecular Operating Environment (MOE) 终极完整安装指南:快速掌握药物设计利器
  • FeHelper前端工具终极指南:快速上手的完整教程
  • MusicFree终极定制指南:3步打造你的专属音乐宇宙

最新新闻

  • 民国老文书老照片别丢!北京记录者商行上门回收民国照片、任命书、毕业证书 - 深鉴新闻
  • FanControl V270终极指南:Windows风扇智能控制与精准优化的完整解决方案
  • Mohist 1.20.1:解决Minecraft服务器Mod与插件兼容性问题的混合架构方案
  • DeepSeek-V4定价真相:显存、框架与提示词如何决定真实成本
  • C语言数学函数库工程实践:从ceil到expm1的精度与性能优化
  • PlantAssistant-管道IDF文件

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号