Go语言中Goroutine和Thread的区别。
Goroutine
Goroutine是可以在与其他goroutine一起独立执行的方法/函数。Go语言中每个并发活动通常称为goroutine。
Thread (线程)
线程是一个轻量级进程。它可以被视为执行一段代码的单元。操作系统管理线程。
以下是Goroutine和Thread之间的一些重要区别。
序号 | 关键点 | Goroutine | Thread (线程) |
---|---|---|---|
1 | 由谁管理 | Goroutine方法由Go语言运行时管理。 | 线程由操作系统管理。 |
2 | 硬件依赖性 | Goroutine独立于硬件。 | 线程依赖于硬件。 |
3 | 通信方式 | Goroutine使用通道作为通信媒介。 | 线程没有简单的通信媒介。 |
4 | 延迟 | Goroutine可以以低延迟与其他例程通信。 | 由于线程没有通信媒介,因此线程之间通信延迟较高。 |
5 | ID | Goroutine没有任何线程本地存储,也没有唯一的ID。 | 线程具有线程本地存储和唯一的ID。 |
6 | 调度 | Goroutine是协作式调度的。 | 线程是抢占式调度的。 |
7 | 启动 | Goroutine具有更快的启动时间。 | 线程具有更慢的启动时间。 |
8 | 栈 | Goroutine具有可增长的分段栈。 | 线程没有可增长的分段栈。 |
广告