进程、线程、协程 的理解

本文深入解析了进程、线程和协程的概念及其在操作系统中的作用。详细阐述了它们之间的区别,包括资源管理、执行状态和调度机制。此外,还讨论了多进程和多线程开发的特点及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、进程

比如通过一个QQ来实现聊天功能。那QQ程序怎么启动起来呢,操作系统把QQ程序丢在一个容器里并把它执行起来,而这个容器就是进程。那进程跟程序之间又是什么关系呢?

  • 程序是死的(只是在磁盘中的一堆指令代码),进程是活的(会占用CPU、内存、文件资源、IO等)
  • 进程是程序的运行实例

二、线程

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

一个进程有多个线程,拿QQ为例子,需要有一个线程监听键盘的输入并转换为文字,需要有一个线程负责拉取对方发来的消息等。从操作系统的角度来看:

  • 进程是最小的资源管理分配单元
  • 线程是最小的执行单元
  • 线程是cpu调度的基本单位

无论是进程还是线程都是需要操作系统来控制的。拿线程来举例,线程有多个执行状态:初始化、可运行、运行中、阻塞、销毁 五种状态。这五种状态的转化关系如下:

线程的状态转化是由操作系统内核中的TCB(thread control block)线程控制块来改变的,需要耗费一定的CPU资源。

三、协程

​ 协程,又称微线程,纤程。英文名Coroutine。比线程更加轻量级,就像一个进程有多个线程一样,一个线程可以有多个协程。

四、多进程

同一时间里,同一计算机系统中如果允许两个或两个以上的进程处于允许状态,这就是多进程。

五、多线程

线程就是把一个进程分为很多片,每一片都可以是一个独立的流程与多进程的区别是只会使用一个进程的资源,线程间可以直接通信。

六、进程、线程、协程之间的区别?

进程、线程、协程
    1.1 先有进程,然后进程可以创建线程,线程是依附在进程里面的, 线程里面可以包含多个协程
    1.2 进程之间不共享全局变量,线程之间共享全局变量,但是要注意资源竞争的问题
    1.3 多进程开发比单进程多线程开发稳定性要强,但是多进程开发比多线程开发资源开销要大
    1.4 多线程开发线程之间执行是无序的,协程之间执行按照一定顺序交替执行
    1.5 协程以后主要用在网络爬虫和网络请求,开辟一个协程大概需要5k空间,开辟一个线程需要512k空间, 开辟一个进程占用资源最多

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值