首页 > 编程语言 > 详细

进程、线程和协程

时间:2021-04-13 17:32:36      阅读:16      评论:0      收藏:0      [点我收藏+]

一、进程

进程是保存在硬盘上的程序运行之后,会在内存空间内形成一个独立的内存体,有自己的独立的内存空间,有自己的堆。操作系统以进程为单位分配(时间片、内存)等资源,进程是资源分配的最小单位。

进程之间通信的方式:

管道(Pipe)、命名管道(FIFO)、消息队列(Message Queue) 、信号量(Semaphore) 、共享内存(Shared Memory);套接字(Socket)。

二、线程

线程(轻量级进程),是操作系统调度(CPU)调度执行的最小单位。

进程和线程的区别和联系

区别:

1.进程是拥有资源的基本单位,线程是资源调度和分配的基本单位。

2.进程之间可以并发进行,同一个进程的多个线程之间也并发执行。

3.进程是拥有资源的最小单位,线程不拥有资源,但是可以访问隶属于进程的资源,进程维护的资源是内存空间,文件句柄、信号处理等。线程维护的资源是栈、调度相关的控制信息等。

4.创建进程时,系统要为其分配和回收资源,导致开销大于线程。

5.进程之间有自己独立的地址空间,一个进程崩溃之后在保护模式下不会影响其他进程,但是线程只是进程中的不同执行路径,有自己的堆栈和局部变量却没有单独的地址空间。所以多进程比多线程的程序更加健壮,但是效率差一点。

联系

1.一个线程只属于一个进程,一个进程可以有多个线程。

2.资源分配给进程,同一个进程的线程共享进程的所有资源。

3.CPU分配给线程,真正运行的是线程

4.线程在执行过程中要实现同步,不同进程的线程之间利用消息通信的办法实现同步。

三、协程

协程是比线程更加轻量级的存在,协程被用户态控制,性能提升很大。

协程在子程序内部是可以中断的,可以转而执行别的,协程在线程之中,切换很快。

协程不需要多线程的锁机制,不存在写变量冲突,协程中的共享资源不加锁,只需要判断状态就可以了。

四、一些其他的概念

并发:任务数量大于cpu核心数量,多个任务轮流运行,cpu切换很快,所以像是一起运行一样。

并行:cpu核心很多,多个任务同时运行。

进程、线程和协程

原文:https://www.cnblogs.com/NodMouse/p/14652793.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!