进程、线程、协程
进程的介绍
一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,
也就是说每启动一个进程,操作系统都会给其分配一定的运行资源(内存资源)保证进程的运行。
比如:现实生活中的公司可以理解成是一个进程,公司提供办公资源(电脑、办公桌椅等),
真正干活的是员工,员工可以理解成线程。
一个程序运行后至少有一个进程,一个进程默认有一个线程,
进程里面可以创建多个线程,线程是依附在进程里面的,没有进程就没有线程。
多进程可以完成多任务,每个进程就好比一家独立的公司,每个公司都各自在运营,
每个进程也各自在运行,执行各自的任务。
进程的注意点介绍
进程之间不共享全局变量
主进程会等待所有的子进程执行结束再结束
线程的介绍
线程是进程中执行代码的一个分支,每个执行分支(线程)要想工作执行代码需要cpu进行调度 ,
也就是说线程是cpu调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。
线程的注意点
线程之间执行是无序的
主线程会等待所有的子线程执行结束再结束
线程之间共享全局变量
线程之间共享全局变量数据出现错误问题
协程的介绍
协程,又称微线程,纤程。英文名Coroutine。从技术的角度来说,“协程就是你可以暂停执行的函数”。
在一个线程中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息,
然后切换到另外一个函数中执行,注意不是通过调用函数的方式做到的,
并且切换的次数以及什么时候再切换到原来的函数都由开发者自己确定
进程和线程的对比
进程之间不共享全局变量
线程之间共享全局变量,但是要注意资源竞争的问题,解决办法: 互斥锁或者线程同步
创建进程的资源开销要比创建线程的资源开销要大
进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位
线程不能够独立执行,必须依存在进程中
多进程开发比单进程多线程开发稳定性要强
适用场景:
当程序中存在大量的逻辑运算,CPU密集型, 适合多进程
当程序中存在大量的IO读写操作(爬虫),适合用多线程;
当程序中存在大量不需要CPU的操作时(IO)、阻塞操作,适用于协程;
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:进程、线程、协程
本文作者:伟生
发布时间:2019-10-31, 19:28:45
最后更新:2019-10-31, 19:59:35
原始链接:http://yoursite.com/2019/10/31/basic_01_relation/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。