线程与进程的区别与联系,线程状态的切换

news2025/10/30 14:13:28

目录

什么是线程?进程?协程?

线程和进程的区别?

多线程的好处:

单核CPU有没有必要上多线程?

为什么没有变成单进程多线程的操作系统?

线程的状态

sleep () 和wait()都是立刻让出CPU 有什么区别?

如何查看线程信息?


什么是线程?进程?协程?

操作系统运行一个程序,就开启了一个进程(比如QQ、微信),在进程内部有很多个线程(比如qq的不同功能);

进程是操作系统管理资源的基本单位;

线程是操作系统调度的基本单位(CPU执行的时间片分配是以线程为基本单位分配。)

协程:( Java里面没有协程)

在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换。

线程和进程的区别?

举例:

操作系统运行一个程序,就开启了一个进程(比如QQ、微信),在进程内部有很多个线程(比如qq的不同功能);

本质:线程本质上是数组形成的栈,在栈区域每一个线程都会有自己独立的栈,所以当多个线程一块执行时,栈区域会有多个线程栈

作用:

进程是操作系统管理资源的基本单位

线程是操作系统调度的基本单位(CPU执行的时间片分配是以线程为基本单位分配。)

进程分配资源,线程用来调度

关系:

进程间相互独立,一个进程崩溃不影响其他进程;线程相互依存,一个线程崩溃可能导致整个进程崩溃

一个进程包括很多线程,一个进程内可以有多个线程同时执行

同一个进程的各个线程共享这个进程的资源

多线程的好处:

多线程可以更充分的利用多核CPU,降低CPU的浪费,让整体运行起来更快

网络io以及磁盘的请求 ,CPU等待时间过长,应该使用多线程,防止CPU浪费比例过大

CPU浪费比例达到50%的时候用多线程合适,如果CPU浪费比例在5%以下,用多线程不合适

单核CPU有没有必要上多线程?

有,在某些情况下,多线程依然可以提高程序的运行速度,比如

阻塞io的时候,当前线程在阻塞的时间内没有执行,CPU等待时间过长,所以多线程此时可以提高效率

有时候,CPU要执行的任务资源在硬盘里,硬盘到内存再到CPU是有很多时间空闲的,可以用CPU来提供效率。

时间片轮转是会记录当前线程的执行情况的,所以多线程可以更好的使用,更高的效率

为什么没有变成单进程多线程的操作系统?

分配资源是进程为基本单位,这个进程的线程共享这个进程的资源

进程独立任务(进程间相互隔离),就比如酷狗音乐和腾讯视频,是两个进程,是不同的任务

线程的状态

新建(new一个新线程)

就绪(线程start,直接进入就绪态,另外sleep0也是一样的功能)

运行(就绪队列中的线程被操作系统选中)

等待(执行wait)

超时等待

阻塞(竞争锁失败进入阻塞队列)

死亡(线程执行完毕)

线程的状态之间可以相互转换:

就绪态-->运行态(被操作系统选中),

运行态-->就绪态(时间片到了让出CPU)

运行态-->等待态(运行时执行wait)

等待态-->就绪态(通过notify唤醒)

阻塞态-->就绪态(上一个线程让出CPU,从阻塞队列出来进入就绪态重新竞争)

进入等待状态的线程,如果没有其他线程唤醒,那么他会一直处于等待队列中不会进入就绪队列再执行

唤醒方法是notify方法

sleep () 和wait()都是立刻让出CPU 有什么区别?

  • sleep()在让出CPU的时候不释放锁(这个线程沉睡不执行的时候,因为有锁,其他线程也别想执行这块资源
  • wait()让出CPU的时候立刻让出锁,调用wait()的时候说明事先一定是加了锁

如何查看线程信息?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1954604.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.4 操作系统结构

操作系统的体系结构:操作系统的内核设计(本节内容简要了解即可) 宏内核 & 微内核 操作系统的内核 计算机系统的层次结构将操作系统部分更详细地划分为内核部分和非内核部分 宏内核 & 微内核 从操作系统的内核架构来划分&#xff…

【初阶数据结构篇】时间(空间)复杂度

文章目录 算法复杂度时间复杂度1. 定义2. 表示方法3. 常见时间复杂度4.案例计算分析冒泡排序二分查找斐波那契数列(递归法)斐波那契数列(迭代法) 空间复杂度案例分析冒泡排序斐波那契数列(递归法)斐波那契数…

【ACM独立出版,高录用】第四届物联网与机器学习国际学术会议(IoTML 2024,8月23-25)

2024年第四届物联网与机器学习国际学术会议(IoTML 2024)将于2024年8月23-25日在中国南昌召开。 会议将围绕着物联网和机器学习开展,探讨本领域发展所面临的关键性挑战问题和研究方向,以期推动该领域理论、技术在高校和企业的发展和…

yolov8标注细胞、识别边缘、计算面积、灰度值计算

一、数据标注 1. 使用labelme软件标注每个细胞的边界信息,标注结果为JSON格式 2. JSON格式转yolo支持的txt格式 import json import os import glob import os.path as osp此函数用来将labelme软件标注好的数据集转换为yolov5_7.0sege中使用的数据集:param jsonfi…

数据库技术深度解析与未来趋势展望

数据库技术深度解析与未来趋势展望 引言 在当今信息化高速发展的时代,数据库作为数据存储和管理的核心基础设施,扮演着至关重要的角色。无论是传统行业还是新兴的互联网领域,数据库的稳定性和性能直接影响到业务系统的运行效率和用户体验。本…

计算机基础-IO

一、裸机中的IO 我们先看下计算机的组成部分: 从图中我们很清楚的看到Input/Output 即为 IO,也就是计算机主机和外部设备进行信息的交换。 这种交换可能是磁盘IO也有可能是网络IO。 二、操作系统中的IO 操作系统分为内核态和用户态,且默认…

GPT-4o mini 震撼登场:开发者的新机遇与挑战

GPT-4o mini 震撼登场:开发者的新机遇与挑战 一、引言二、GPT-4o mini 模型的卓越性能三、极具竞争力的价格优势四、开发者的探索与实践五、提升开发效率和创新能力的策略六、面临的挑战与应对措施七、未来展望八、总结 在科技的浪潮中,OpenAI 最新推出的…

基于springboot+vue+uniapp的网上花店小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

概率论--置信区间和置信度

目录 置信区间 置信度 关系与权衡 置信区间的计算公式有哪些不同的变体,以及它们各自的适用情况是什么? 基于正态分布的置信区间: 基于t分布的置信区间: 单边置信区间: 如何根据不同的研究目的和数据类型选择合…

【React】详解自定义 Hook

文章目录 一、自定义 Hook 的基本用法1. 什么是自定义 Hook?2. 创建自定义 Hook3. 使用自定义 Hook 二、自定义 Hook 的进阶应用1. 处理副作用2. 组合多个 Hook3. 参数化 Hook4. 条件逻辑 三、自定义 Hook 的实际应用案例1. 实现用户身份验证2. 实现媒体查询 四、最…

【NPU 系列专栏 2.5 -- GPU 与 NPU 的区别】

请阅读【嵌入式及芯片开发学必备专栏】 文章目录 GPU 简介GPU 缺点NPU 特点NPU 应用场景NPU 与 GPU 的关系和区别NPU 与 GPU 区别GPU 简介 GPU 最初设计用于图形渲染和图像处理。近年来,由于其强大的并行计算能力,GPU 被广泛应用于通用计算领域,特别是深度学习和科学计算。…

堆的实现-适用于算法竞赛

首先讲一下能够实现的操作。 插入一个数查找最小值删除最小值删除任意一个元素修改任意一个元素 什么是堆? 堆其实是一棵完全二叉树。 即处理叶子节点和倒数第一层节点,其他节点都有两个子节点,而且顺序是从上到下,从左到右。 …

C# 简单的单元测试

文章目录 前言参考文档新建控制台项目新建测试项目添加引用添加测试方法测试结果(有错误)测试结果,通过正规的方法抛出异常 总结 前言 听说复杂的项目最好都要单元测试一下。我这里也试试单元测试这个功能。到时候调试起来也方便。 参考文档 C# 单元测试&#xf…

JavaFX布局-TilePane

JavaFX布局-TilePane 常用属性alignmenttileAlignmentorientationhgapvgappadding 实现方式Javafxml 自动排列其子节点成网格状根据容器的大小以及子节点的数量和大小自动计算最佳的排列方式推荐子节点固定大小,参差不齐的子节点,效果很诡异 常用属性 …

【VS2019安装+QT配置】

【VS2019安装QT配置】 1. 前言2. 下载visual studio20193. visual studio2019安装4. 环境配置4.1 系统环境变量配置4.2 qt插件开发 5. Visual Studio导入QT项目6. 总结 1. 前言 前期安装了qt,发现creator编辑器并不好用,一点都不时髦。在李大师的指导下&…

基于Springboot的高校毕业生资格审查系统/计算机项目/Java、Web/课设

摘 要 计算机网络与信息化管理相配合,可以有效地提高管理人员的工作效能和改进工作的质量。良好的高校毕业生资格审查系统可以使管理员工作得到更好的管理和应用,并有助于管理员更好地管理高校毕业生资格审查,并有助于解决人力管理中出现的差…

C++第二十八弹---进一步理解模板:特化和分离编译

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1. 非类型模板参数 2. 模板的特化 2.1 概念 2.2 函数模板特化 2.3 类模板特化 2.3.1 全特化 2.3.2 偏特化 2.3.3 类模板特化应用示例 3. …

Redis常用指令(不定期更新)

Redis常用指令(不定期更新) 查询指定前缀key的数量查看键空间事件开启键空间通知 查询指定前缀key的数量 查询【TEST前缀】的key数量 EVAL "return #redis.call(keys,TEST:*)" 0返回信息 查看键空间事件 config get notify-keyspace-even…

Linux——DNS服务搭建

(一)搭建nginx 1.首先布置基本环境 要求能够ping通外网,有yum源 2.安装nginx yum -y install nginx 然后查看验证 3.修改网页配置文件 修改文件,任意编写内容,然后去物理机测试 (二)创建一…

51.TFT_LCD液晶屏驱动设计与验证(4)

(1)顶层文件: module tft_colorbar(input clk ,input reset_n ,output hsync ,output vsync ,output [23:0] rgb_tft ,output tft_bl ,output …