多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# **关于进程,线程和Go协程** 进程是包含计算机指令,用户数据和系统数据, 以及包含其运行时获得的其他类型资源的程序执行环境,而程序是一个文件,其中包含用于初始化进程的指令和用户数据部分的指令和数据。 线程相对于进程是更加小巧而轻量的实体,线程由进程创建且包含自己的控制流和栈。区分线程和进程的一个简单的方式是:假如进程是正在运行的二进制文件,线程就是其子集。 `goroutine`是Go程序并发执行的最小单元,因为`goroutine`不是像`Unix`进程那样是自治的实体,`goroutine`存在于Unix进程的线程中,它的主要优点是非常轻巧,运行成千上万或几十万都没有问题。 总结一下,`goroutine`比线程更轻量,而线程比进程更轻量。实际上,一个进程可以有多个线程以及许多`goroutine`,而`goroutine`需要一个进程才能存在。因此,为了创建一个`goroutine`,你需要有一个进程且这个进程至少有一个线程--`Unix`负责进程和线程管理,而Go工程师只需要处理`goroutine`,这极大的降低了开发的成本。 到现在为止,你知道了关于进程,线程和协程的基本知识,下一小节我们聊聊Go调度器。