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

Linux软件编程:进程线程(线程)

一、基本概念:线程是一个轻量级的进程

  • 线程本质就是一个进程
  • 线程和进程不完全一致,轻量指空间,进程空间和线程空间管理方法不同

二、进程和线程区别

        1.线程本质是进程,线程是任务创建、调度和回收的过程

        2.进程空间:文本段+数据段+系统数据段

        3.进程空间

  • 线程必须位于进程空间内部,没有进程,线程无法独立
  • 一个进程的所有线程共享文本段+数据段+堆区,独享栈区
  • 线程独享的栈区默认为8MB
  • 一个进程中的多个线程切换调度任务时,资源开销较小

        4.进程和线程区别

  • 线程是CPU任务调度的最小单元
  • 进程是操作系统资源分配的最小单元

三、多进程和多线程的优缺点

        1.多线程和多进程对比

场景多进程多线程对比
效率多进程切换需要重新映射物理地址,占用资源开销大多线程在同一进程空间内部切换任务,占用资源开销较小多线程>多进程
通信多进程没有共享空间,需要使用进程间通信的方法来完成通信多线程有共享空间,只需定义共享空间变量完成数据交换即可实现通信多线程>多进程
资源竞争多进程没有共享空间,不存在资源竞争多线程使用共享空间通信,需要保证资源使用的互斥性,防止多线程对共享资源产生竞争多进程>多线程
安全多进程空间独立,一个进程的奔溃不会影响其余进程多线程共用一个进程空间,一个线程异常奔溃,可能引发进程异常退出,导致其余线程也无法执行多进程>多线程

四、线程的调度:与进程调度保持一致(宏观并行,微观串行)

五、线程的消亡:线程结束需要回收线程空间,否则产生僵尸线程

六、线程的函数接口

进程接口线程接口
forkpthread_create

exit

pthread_exit

waitpthread_join

        1.ptnread_create

        2.ptnread_self

        3.ptnread_exit

        4.ptnread_join

注意

  • tid对应的线程只有不退出,pthread_join阻塞等待结束回收线程空间
  • pthread_join具备同步功能
http://www.dtcms.com/a/333389.html

相关文章:

  • 结构体(Struct)、枚举(Enum)的使用
  • 基于SpringBoot的房产销售系统
  • 护栏卫士碰撞报警系统如何实时监测护栏的状态
  • 系统时钟配置
  • 38 C++ STL模板库7-迭代器
  • 用ICO图标拼成汉字
  • BFS和codetop复习
  • 复杂度扫尾+链表经典算法题
  • Klipper-probe模块
  • H5449G降压恒流无人机照明驱动芯片方案24V/36V/48V/72V降6V12V9V /8A替换NCL30160
  • 探索无人机图传技术:创新视野与无限可能
  • C#WPF实战出真汁06--【系统设置】--餐桌类型设置
  • Linux 系统中, LANG 和 LC_ALL变量有什么区别与联系?
  • 文档对比(java-diff-utils)
  • lidar2imu/auto_caliban以及manual_calib安装过程
  • 8.15网络编程——UDP和TCP并发服务器
  • qs是什么?
  • Python入门第3课:Python中的条件判断与循环语句
  • Ubuntu20.04下Remmina的VNC密码忘记后重置
  • 手机场景性能测试中的部分关键指标
  • Layui 语法详解与全功能示例
  • iOS 性能监控实战,多工具协作完成全方位分析
  • LCR 076. 数组中的第 K 个最大元素
  • 代码随想录刷题Day33
  • [优选算法专题二滑动窗口——长度最小的子数组]
  • 【完整源码+数据集+部署教程】电池柱状态检测系统源码和数据集:改进yolo11-TADDH
  • 华为交换机配置文件的相关命令和用法
  • 深入解析五大通信协议:TCP、UDP、HTTP_HTTPS、WebSocket与GRPC
  • Linux:套接字
  • shell脚本实现sha256sum校验并拷贝校验通过的文件