协程: 协程是一个函数或方法,它与程序中存在的任何其他 协程 一起独立并同时执行。或者换句话说,Go 语言中每个并发执行的活动都称为协程(Goroutines)。
线程: 进程是操作系统的一部分,负责执行应用程序。在系统上执行的每个程序都是一个进程,并且要在应用程序内部运行代码,进程使用称为线程的术语。线程是轻量级进程,或者换句话说,线程是执行程序下代码的单元。所以每个程序都有逻辑,一个线程负责执行这个逻辑。
以下是 协程 和 线程 之间的一些区别:
协程 | 线程 |
---|---|
协程由 go 运行时管理。 | 操作系统线程由内核管理。 |
协程不依赖于硬件。 | 线程依赖于硬件。 |
协程具有简单的通信媒介称为通道。 | 线程没有简单的通信媒介。 |
由于通道的存在,一个 协程 可以以低延迟与其他 协程 通信。 | 由于缺乏简单的通信媒介,线程间的通信以高延迟进行。 |
协程没有 ID,因为 go 没有线程局部存储。 | 线程具有自己的唯一 ID,因为它们具有线程本地存储。 |
协程比线程便宜。 | 线程的成本高于 协程。 |
协程是合作安排的。 | 线程是预先安排好的。 |
协程的启动时间比线程快。 | 线程的启动时间比 协程 慢。 |
协程具有可增长的分段堆栈。 | 线程没有可增长的分段堆栈。 |
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264470.html