Go语言协程和线程的区别

协程: 协程是一个函数或方法,它与程序中存在的任何其他 协程 一起独立并同时执行。或者换句话说,Go 语言中每个并发执行的活动都称为协程(Goroutines)。
线程: 进程是操作系统的一部分,负责执行应用程序。在系统上执行的每个程序都是一个进程,并且要在应用程序内部运行代码,进程使用称为线程的术语。线程是轻量级进程,或者换句话说,线程是执行程序下代码的单元。所以每个程序都有逻辑,一个线程负责执行这个逻辑。

以下是 协程 和 线程 之间的一些区别:

协程 线程
协程由 go 运行时管理。 操作系统线程由内核管理。
协程不依赖于硬件。 线程依赖于硬件。
协程具有简单的通信媒介称为通道。 线程没有简单的通信媒介。
由于通道的存在,一个 协程 可以以低延迟与其他 协程 通信。 由于缺乏简单的通信媒介,线程间的通信以高延迟进行。
协程没有 ID,因为 go 没有线程局部存储。 线程具有自己的唯一 ID,因为它们具有线程本地存储。
协程比线程便宜。 线程的成本高于 协程。
协程是合作安排的。 线程是预先安排好的。
协程的启动时间比线程快。 线程的启动时间比 协程 慢。
协程具有可增长的分段堆栈。 线程没有可增长的分段堆栈。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264470.html

(0)
上一篇 2022年6月7日
下一篇 2022年6月7日

相关推荐

发表回复

登录后才能评论