进程,线程,协程的区别与联系
我们先来看他们的概念:
进程: 通俗理解一个运行起来的程序或者软件叫做进程,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元
线程:是在我们创建一个进程的同时创建了一个线程。通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统多个程序间并发执行的程度。
协程:有的人喜欢称为纤程(Fiber),或者绿色线程(GreenThread)。其实最直观的解释可以定义为线程的线程。
因此我们可以从字面意思来看,就很好理解。
进程和线程的对比:
1 进程是操作系统资源分配的基本单位,每启动一个进程都需要向操作系统索要运行资源,默认一个进程只有一个线程,线程是依附在进程里面的
2 线程是cpu调度的基本单位, 通过线程去执行进程中代码, 线程是执行代码的分支
3 多进程开发比单进程多线程开发稳定性要强,但是多进程开发比多线程开发资源开销要大
4 多进程开发某个进程死了不会影响其它进程的运行,但是多线程开发该进程死了那么这些线程都要进行销毁
因此也就有了“并发”与“并行”
并发: 任务数大于cpu的核数,多个任务轮流执行,由于cpu切换速度特别快,看起来像是一起运行,其实是假象。
并行: 任务数小于或者等于cpu的核数,那么多个任务是真正意义一起执行。
先有进程,然后进程可以创建线程,线程是依附在进程里面的, 线程里面可以包含多个协程
进程之间不共享全局变量,线程之间共享全局变量,但是要注意资源竞争的问题
多进程开发比单进程多线程开发稳定性要强,但是多进程开发比多线程开发资源开销要大
多线程开发线程之间执行是无序的,协程之间执行按照一定顺序交替执行
协程以后主要用在网络爬虫和网络请求,开辟一个协程大概需要5k空间,开辟一个线程需要512k空间, 开辟一个进程占用资源最多
转载于:https://www.cnblogs.com/qngq/p/10643149.html
进程,线程,协程的区别与联系相关推荐
- linux进程线程协程的区别,进程和线程、协程的区别
现在多进程多线程已经是老生常谈了,协程也在最近几年流行起来.python中也有协程库,tornado中也用了gevent封装好的协程.本文主要介绍进程.线程和协程三者之间的区别. 一.概念 1.进程 ...
- 进程/线程/协程的区别
1 基本概念 进程(Process) 进程是应用程序的启动实例,进程拥有代码和打开的文件资源.数据资源.独立的内存空间. 线程(Lightweight Process,LWP) 线程从属于进程,是程序 ...
- Linux的进程/线程/协程系列4:进程知识深入总结:上篇
Linux的进程/线程/协程系列4:进程/线程相关知识总结 前言 本篇摘要: 1. 进程基础知识 1.1 串行/并行与并发 1.2 临界资源与共享资源 1.3 同步/异步与互斥 1.4 进程控制原语 ...
- linux的进程/线程/协程系列5:协程的发展复兴与实现现状
协程的发展复兴与实现现状 前言 本篇摘要: 1. 协同制的发展史 1.1 协同工作制的提出 1.2 自顶向下,无需协同 1.3 协同式思想的应用 2. 协程的复兴 2.1 高并发带来的问题 2.2 制 ...
- linux的进程/线程/协程系列3:查看linux内核源码——vim+ctags/find+grep
linux的进程/线程/协程系列3:查看linux内核源码--vim+ctags/find+grep 前言 摘要: 1. 下载linux内核源码 2. 打标签方法:vim+ctags 2.1 安装vi ...
- linux的进程/线程/协程系列1:进程到协程的演化
linux的进程/线程/协程系列1:进程到协程的演化 前言 摘要: 1. 一些历史:批处理时代 2. 现代操作系统启动过程 3. 进程(process)的出现 4. 线程(thread)与线程池 5. ...
- 进程 线程 协程 各自的概念以及三者的对比分析
文章目录 1 进程 2 线程 3 进程和线程的区别和联系 3.1 区别 3.2 联系 4 举例说明进程和线程的区别 5 进程/线程之间的亲缘性 6 协程 线程(执行一个函数)和协程的区别和联系 协程和 ...
- 简要说明__python3中的进程/线程/协程
多任务可以充分利用系统资源,极大提升程序运行效率,多任务的实现往往与 多线程,多进程,多协程有关 稳定性: 进程 > 线程 > 协程 系统资源占用量:进程 > 线程 > 协程 ...
- Python之进程+线程+协程(异步、selectors模块、阻塞、非阻塞IO)
文章目录 一.IO多路复用 二.selectors模块 本篇文字是关于IO多路复用的更深入一步的总结,上一篇 Python之进程+线程+协程(事件驱动模型.IO多路复用.select与epoll)对I ...
- python进程线程协程区别_Python3多线程与协程
python中的多线程非常的常用,之前一直糊里糊涂地使用,没有一些系统性的概念,记录一下~ 0x001 多线程的优势:可将长时间占用的程序放到后台 可能会加速程序执行速度 能够实现一些类似同步执行的效 ...
最新文章
- Ontology的研究和应用
- ajax 导致 css 延迟_AJAX远离404
- Oracle 应用归档 卡死,关于Oracle归档进程的运行机制
- 拥抱.NET Core系列:MemoryCache 缓存域
- X-Mas Musings –在Grails集成测试中不要使用随机服务器端口
- 【开源】iTest教学辅助系统源代码
- 计算机网络抓包参考文献,计算机网络课程设计二(网络抓包与分析)
- 基于Spring Boot2 + Spring Security OAuth2 实现单点登陆(二)
- PCB Layout 注意事项——布线
- 并联串联混合的电压和电流_电子电路基础,教你看懂电子电路,简单的串并联...
- epsonl360打印机连接电脑_epsonl360打印机脱机如何解决
- 多个jdk共存与切换
- Java DateUtil 时间工具类
- Excel如何将某个特定值变为空值
- QListWidget设置自定义行间距
- AlphaGo功成身退了,围棋还将继续
- 【计算机基础04】Excel知识
- DLLMain返回值
- 关于新公司的一些感悟
- activity间数据传递实例_人品计算器
热门文章
- 基于SSM的培训机构管理系统
- java中arraylist扩容问题_Arraylist扩容机制
- 文件服务器 选型,文件服务器选型
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_02-freemarker介绍
- mybatis逆向工程maven版本idea工具
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_4_字节输出流写入数据到文件...
- 黄老师架构师课程笔记(一)反射
- 一个简单的python登录验证系统
- JS 正则表达式基础
- 多版本Python共存的配置和使用