返回介绍

09.1 关于进程、线程和 Go 协程

发布于 2024-08-14 12:50:32 字数 3173 浏览 0 评论 0 收藏 0

进程是包含计算机指令,用户数据和系统数据的程序执行环境,以及包含其运行时获得的其他类型资源。而程序是一个文件,其中包含用于初始化进程的指令和用户数据部分的指令和数据。

线程相对于进程是更加小巧而轻量的实体,线程由进程创建且包含自己的控制流和栈,线程和进程的区别在于:进程是正在运行的二进制文件,而线程是进程的子集。

Goroutine是Go程序并发执行的最小单元,因为Goroutine不是像Unix进程那样是自治的实体,Goroutine生活在Unix进程的线程中。Goroutine的主要优点是非常轻巧,运行成千上万或几十万都没有问题。

总结一下,Goroutine比线程更轻量,而线程比进程更轻量。实际上,一个进程可以有多个线程以及许多Goroutine,而Goroutine需要一个进程的环境才能存在。因此,为了创建一个Goroutine,你需要有一个进程且这个进程至少有一个线程--Unix负责进程和线程管理,而Go工程师只需要处理Goroutine,这极大的降低了开发的成本。

到现在为止,你知道了关于进程,线程和Goroutine的基本知识,下一小节我们聊聊Go调度器。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文