【Linux】线程-线程概念

这篇具有很好参考价值的文章主要介绍了【Linux】线程-线程概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是线程

实际上,线程是一个进程内部的控制序列,一个程序的一个执行线路就是一个线程。

并且一个进程中至少有一个线程,本质上,一个进程内部如果有多个线程,那么这些线程实际上是指向同一块地址空间的。而不论进程还是线程,从CPU看来都是一个PCB,只是说线程的PCB要比进程更加轻量化一些。意味着当需要进行切换时,线程切换的代价要远低于进程切换。

【Linux】线程-线程概念

线程的优点和缺点

优点:
1.我们知道,并发和并行,那么当我们的进程中有多个执行流的时候,利用并行的方式可以极大的提高程序运行效率。
2.进程切换的代价要比线程切换的代价大的多
3.线程占用的资源要比进程少很多
4.可以并行的运行

缺点
1.当进程中的线程数量远远超过CPU的数量,可能线程切换的开销会影响进程运行的效率
2.对代码的鲁棒性要求更高
3.缺乏访问控制,编程的难度变高

线程的用途和线程异常

线程的用途:
合理的使用多线程,可以提高CPU密集型程序的执行效率
合理的使用多线程,也可以提高IO密集型程序的用户体验
线程异常:
当单个线程出现:越界访问,解引用空指针,管道破裂,除0,double free和栈溢出的情况时,会导致线程崩溃,从而触发信号机制,终止进程,当进程终止了,当前进程中所有的线程就都终止了。

线程与进程的区别

进程是操作系统进行资源分配的最小单位,而线程是操作系统进行调度的最小单位。同一个进程组中,有多个线程,多个线程都指向同一个进程虚拟地址空间,意味着各个线程是共享进程数据的。

但是如果仅仅是共享进程数据,那么就会出现调用栈混乱的情况,比如,主线程调用了func函数,其中调用了工作线程,当主线程的func函数要退出时,但是工作线程没有退出,按照压栈的操作来说,需要首先等工作线程退出后,才能退出主线程的func函数,这样就出现了调用栈混乱的情况。

为了防止出现这种问题,在进程虚拟地址空间内部,定义了一块共享区,其中就包含一个叫做调用栈,这样各个线程的调用栈是独立的,就不存在调用栈混乱的问题了。

【Linux】线程-线程概念文章来源地址https://www.toymoban.com/news/detail-424640.html

线程独有的数据 线程共享的数据
线程ID,调用栈、寄存器、erron,信号屏蔽字,调度优先级 文件描述符表,信号的处理方式,工作目录,用户id和用户组id

到了这里,关于【Linux】线程-线程概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 中的 TypeError: an integer is required 错误通常是由于我们在代码中使用整数(integer)参数的地方实际上传递

    Python 中的 TypeError: an integer is required 错误通常是由于我们在代码中使用整数(integer)参数的地方实际上传递了非整数类型的参数,例如字符串(string)或浮点数(float)。这个错误可以在编写 Python 程序时遇到,但也可能是在编写 Python 脚本时遇到。 下面是解决 TypeError: an i

    2024年02月15日
    浏览(33)
  • 【Linux操作系统】Linux中的进程和线程的概念、区别和实现的细节

    在Linux中,进程和线程是操作系统中两个重要的执行单位。它们是对程序运行时的抽象概念,用于管理和调度计算机资源。 进程是正在运行的程序的实例。它是操作系统分配资源和调度执行的基本单位。每个进程都有自己独立的内存空间,包含代码、数据、堆栈等。进程还包

    2024年02月14日
    浏览(41)
  • 【Linux】 由“进程”过渡到“线程” -- 什么是线程(thread)?

    如何看待地址空间和页表: 地址空间是进程能看到的资源窗口 页表决定,进程真正拥有资源的情况(页表映射多少才是拥有多少) 合理的对地址空间+页表进行资源划分,我们就可以对一个进程所有的资源进行分类 虚拟地址如何找到物理地址: 最后一级页表存放的是页框的起

    2024年02月15日
    浏览(33)
  • Qt学习:Qt 进程和线程之四,线程实际应用

    为了让程序尽快响应用户操作,在开发应用程序时经常会使用到线程。 对于耗时操作如果不使用线程,UI 界面将会长时间处于停滞状态,这种情况是用户非常不愿意看到的,我们可以用线程来解决这个问题。 大多数情况下,多线程耗时操作会与 UI 进行交互,比如:显示进度

    2024年02月13日
    浏览(30)
  • 【Python】多线程编程 ① ( 线程相关概念 | 进程 | 线程 | 协程 / 纤程 | 管程 )

    进程 与 操作系统 : 进程 是 操作系统 中 能够独立运行的单元 , 是 操作系统 对 正在运行的 应用程序 的 抽象结构 描述 ; 操作系统 中 运行的每个 应用程序 就是一个进程 ; 一个操作系统中可以运行 多个 进程 ; 每个 应用程序 都会被 操作系统 分配一个 进程 ID ; 多个进程之间

    2024年02月15日
    浏览(27)
  • 程序、进程、线程的概念、区别与联系

    程序指的是一些保存在磁盘上的指令的有序集合,通常用某种程序设计语言编写,运行于某种目标计算机体系结构上。程序是静态的,就好比一个电脑上的普通文件一般,没有任何执行的概念。 进程是计算机中的软件程序关于某数据集合上的一次运行活动,用通俗的话来讲

    2024年02月03日
    浏览(33)
  • Linux查看进程实际占用内存的几种方式

    方式一 top -p pid RES :72296,使用的内存为72296kb %MEM:1.9,进程占用了总内存的1.9% 方式二 ps -aux | grep pid 显示其他用户启动的进程(a) 查看系统中属于自己的进程(x) 启动这个进程的用户和它启动的时间(u) 方式三 cat /proc/pid/status

    2024年02月11日
    浏览(32)
  • 关于进程、线程、协程的概念以及Java中的应用

    本文将从“操作系统”、“Java应用”上两个角度来探究这三者的区别。 在我本人的疑惑中,我有以下3个问题。 在“多道程序环境下”,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性以及不可再现性的特征,因此需要引入进程的概念。 进程是程序执行的过

    2024年02月08日
    浏览(50)
  • 什么是线程?为什么需要线程?和进程的区别?

    目录 前言 一.线程是什么? 1.1.为什么需要线程 1.2线程的概念 1.3线程和进程的区别  二.线程的生命周期 三.认识多线程 总结 🎁个人主页:tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主 🎥 本文由 tq02 原创,首发于 CSDN🙉 🎄 本章讲解内容: 线程的讲解 🎥学习专栏:

    2024年02月14日
    浏览(60)
  • 并发——什么是线程,什么是进程

    进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包