博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程,线程,协程的区别与联系
阅读量:5174 次
发布时间:2019-06-13

本文共 974 字,大约阅读时间需要 3 分钟。

我们先来看他们的概念:

进程: 通俗理解一个运行起来的程序或者软件叫做进程,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元

线程:是在我们创建一个进程的同时创建了一个线程。通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统多个程序间并发执行的程度。

协程:有的人喜欢称为纤程(Fiber),或者绿色线程(GreenThread)。其实最直观的解释可以定义为线程的线程。

因此我们可以从字面意思来看,就很好理解。

进程和线程的对比:

   1 进程是操作系统资源分配的基本单位,每启动一个进程都需要向操作系统索要运行资源,默认一个进程只有一个线程,线程是依附在进程里面的

   2 线程是cpu调度的基本单位, 通过线程去执行进程中代码, 线程是执行代码的分支

   3 多进程开发比单进程多线程开发稳定性要强,但是多进程开发比多线程开发资源开销要大

   4 多进程开发某个进程死了不会影响其它进程的运行,但是多线程开发该进程死了那么这些线程都要进行销毁

因此也就有了“并发”与“并行”

并发: 任务数大于cpu的核数,多个任务轮流执行,由于cpu切换速度特别快,看起来像是一起运行,其实是假象。

并行:  任务数小于或者等于cpu的核数,那么多个任务是真正意义一起执行。

先有进程,然后进程可以创建线程,线程是依附在进程里面的, 线程里面可以包含多个协程

 进程之间不共享全局变量,线程之间共享全局变量,但是要注意资源竞争的问题

 多进程开发比单进程多线程开发稳定性要强,但是多进程开发比多线程开发资源开销要大

 多线程开发线程之间执行是无序的,协程之间执行按照一定顺序交替执行

 协程以后主要用在网络爬虫和网络请求,开辟一个协程大概需要5k空间,开辟一个线程需要512k空间, 开辟一个进程占用资源最多

转载于:https://www.cnblogs.com/qngq/p/10643149.html

你可能感兴趣的文章
Java 8 Stream介绍及使用2
查看>>
摘录自《Vivian Lee》
查看>>
4-windows 用cmd 如何输入命令 进入文件夹
查看>>
毕业后的五年拉开大家差距的原因(肖雪)
查看>>
Java集合大全
查看>>
接口限流算法
查看>>
HDU - 2845 Beans
查看>>
html设置背景图片并自适应
查看>>
深入研究C语言 第一篇(续)
查看>>
数字 字符串 转换
查看>>
Git时光机穿梭之撤销修改
查看>>
雷林鹏分享:MySQL 插入数据
查看>>
C#设计模式之抽象工厂
查看>>
NOSQL
查看>>
Oracle存储过程由例子到理论
查看>>
正因为我们是前端,所以代码更需要优雅
查看>>
实验四 主存空间的分配和回收
查看>>
LeetCode 14. 最长公共前缀(Longest Common Prefix)
查看>>
Ubuntu 12.04 编译最新版u-boot-2012.04
查看>>
Access转Sqlite的最简单的方法(不需要DB Manager)
查看>>