程序、进程、线程、协程之间的关系

程序:由代码编译成功得到的二进制文件。在Windows中就是.exe文件。程序只占用磁盘空间。        

进程:运行起来的程序。进程需要占用系统资源(内存,CPU)。进程是最小的系统资源分配单位,只是给线程提供执行环境。 

由于一个进程产生一个进程地址空间,且进程地址空间相互独立,一个进程死亡,其他进程不会受到影响。

进程状态:进程的基本状态有5种。分别为初始态、就绪态、运行态、挂起态、终止态。其中初始态为进程准备阶段,常与就绪态结合来看。

 线程:LWP(light weight process)轻量级进程。线程是最小的执行单位。CPU分配时间轮片的对象。

产生原因:提高争夺到CPU的概率。

协程:coroutine,也叫轻量级线程。 与传统的系统级线程和进程相比,携程最大的优势在于“轻量级”,可以轻松创建上万个而不会导致系统资源衰歇。而线程和进程通常很难超过1万个。一个线程中可以有任意多个协程,但某一时刻只能有一个协程在运行,多个协程分享该线程分配到的计算机资源。

产生原因:提高程序执行的效率。(利用闲暇时间执行其他任务)

go协程:叫goroutine。在进程中创建。它比线程更小,十几个goroutine可能体现在底层就是五六个线程,go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需要极少的栈内存(大概4~5kb),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用,更高效,更轻便。一般情况下,一个普通计算机跑几十个线程就有点负载过大了,但是同样的机器却可以轻松的让成百上千个goroutine进行资源竞争。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值