码迷,mamicode.com
首页 > 编程语言 > 详细

探讨进程、线程、协程的区别

时间:2018-12-05 02:07:29      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:image   多线程   自己的   相同   style   str   全局   bubuko   数据表   

它们都是因程序的并发执行程序而产生

一、进程

①、进程是资源分配的基本单位,程序运行时系统就会创建一个进程,例如打开qq应用就创建一个进程。

②、操作系统会为它分配专门的进程控制块

③、三种状态:就绪状态、执行状态、阻塞状态

二、线程

①、线程是程序执行时的最小单位,一个进程可以由很多个线程组成,但至少包含一个主线程,例如qq里有多个功能则多个线程

技术分享图片

三、协程

①、协程是一种用户态的轻量级线程它是线程更小的执行单元,它的调度完全由用户控制

技术分享图片

四、进程与线程的区别

①、进程开销更大:进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多。

②、进程共享数据更复杂:同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式进行

③、进程健壮性更好:多线程程序只要有一个线程死掉,整个进程也死掉,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间,线程之间没有单独的地址空间。

探讨进程、线程、协程的区别

标签:image   多线程   自己的   相同   style   str   全局   bubuko   数据表   

原文地址:https://www.cnblogs.com/legendheng/p/10068448.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!