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

系统编程—线程

系统编程—线程
📅 发布时间:2026/6/20 0:42:28

概念

线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

工作原理

线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥有的全部资源。线程可以创建和撤销线程,从而实现程序的并发执行。一般,线程具有就绪、阻塞和运行三种基本状态。

阻塞(Block):如果一个线程在执行过程中需要等待某个事件发生,则被阻塞。

适用范围

  1. 服务器中的文件管理或通信控制
  2. 前后台处理
  3. 异步处理

特征

  1. 进程是系统中最小的资源分配单位
  2. 线程是系统中最小的执行单位
  3. 进程中,线程与线程是平级关系
  4. 在进程中,默认有一个线程,那个是主线程

与进程的区别

  1. 线程可以资源共享,进程资源对立。线程有各自的栈区,这个区域独立。
  2. 稳定行,进程相对稳定,线程不稳定(如果进程中多线程,其中一个崩溃,整个进程崩溃);
  3. 创建的开销,线程创建需要在进程空间中,开辟一个新的栈区(8MB) .新建一个进程的话,需要创建3GB空间。
  4. 并发度,线程的并发高于进程的并发度。

线程编程步骤POSIX

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

线程有两个基本类型

用户级线程:管理过程全部由用户程序完成,操作系统内核心只对进程进行管理。

系统级线程(核心级线程):由操作系统内核进行管理。操作系统内核给应用程序提供相应的系统调用和应用程序接口API,以使用户程序可以创建、执行、撤销线程。

线程的状态变化

(1)创建线程
当创建一个新的进程时,也创建一个新的线程,进程中的线程可以在同一进程中创建新的线程。

(2)终止线程

可以正常终止自己,也可能某个线程执行错误,由其它线程强行终止。终止线程操作主要负责释放线程占有的寄存器和栈

(3)阻塞线程

当线程等待每个事件无法运行时,停止其运行。

(4)唤醒线程

当阻塞线程的事件发生时,将被阻塞的线程状态置为就绪态,将其挂到就绪队列。进程仍然具有与执行相关的状态。例如,所谓进程处于“执行”状态,实际上是指该进程中的某线程正在执行。对进程施加的与进程状态有关的操作,也对其线程起作用。例如,把某个进程挂起时,该进程中的所有线程也都被挂起,激活也是同样。

线程相关函数

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
功能:该函数可以创建指定的一个线程。
参数:
  1. thread线程id,需要实现定义并由该函数返回。
  2. attr线程属性,一般是NULL,表示默认属性。
  3. start_routine指向指针函数的函数指针。本质上是一个函数的名称即可。称为th回调函数,是线程的执行空间。
  4. arg回调函数的参数,即参数3的指针函数参数。
返回值:
  1. 成功0
  2. 失败 错误码
获得id号
pthread_t pthread_self(void); unsigned long int; %lu
功能:获取当前线程的线程id
参数:无
返回值:
  1. 成功 返回当前线程的线程id
  2. 失败 非0值;
线程退出函数
void pthread_exit(void *retval); exit return p;
功能:子线程自行退出
参数:retval线程退出时候的返回状态,临死遗言。
返回值:无
结束线程
int pthread_cancel(pthread_t thread);
功能:请求结束一个线程
参数:thread请求结束一个线程tid
返回值:
  1. 成功0
  2. 失败 非0值;
线程空间的回收--》》阻塞方式
int pthread_join(pthread_t thread, void **retval);
功能:通过该函数可以将指定的线程资源回收,该函数具有阻塞等待功能,如果指定的线程没有结束,则回收线程会阻塞。
参数:
  1. thread要回收的子线程tid
  2. retval要回收的子线程返回值/状态。==》ptread_exit(值);
返回值:
  1. 成功0
  2. 失败 非0值;
分离属性,给某个线程设置的属性,如果线程设置了这个属性,那么,线程在退出后,相关资源(栈区)会被系统回收,原来创建者,就不能回收了。
目的线程消亡,自动回收空间。
int pthread_deatch(pthread_t thread);
功能,设置分离属性
参数,线程id号,填自己的id
返回值:
  1. 成功0
  2. 失败 非0值;

相关新闻

  • LobeChat能否部署在Render平台?持续部署便捷方案
  • 10 个降AI率工具,本科生论文查重优化推荐
  • 10 个降AI率工具,专科生也能轻松应对!

最新新闻

  • Ascend大模型预训练实战:硬件适配、数据对齐与梯度防控
  • Redis Memory Analyzer与Python集成:API使用详解
  • 2026十大离婚律师综合口碑榜单,价格透明服务优质精选 - mypinpai
  • 深入解析S12XDBG硬件调试模块:从比较器、状态机到复杂断点实战
  • 从环境变量到密码安全:Aero处理敏感配置的完整方案
  • CANN/ge获取HCCL跟随流数量

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 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 号