Go语言中Goroutine和Thread的区别。


Goroutine

Goroutine是可以在与其他goroutine一起独立执行的方法/函数。Go语言中每个并发活动通常称为goroutine。

Thread (线程)

线程是一个轻量级进程。它可以被视为执行一段代码的单元。操作系统管理线程。

以下是Goroutine和Thread之间的一些重要区别。

序号关键点GoroutineThread (线程)
1由谁管理Goroutine方法由Go语言运行时管理。线程由操作系统管理。
2硬件依赖性Goroutine独立于硬件。线程依赖于硬件。
3通信方式Goroutine使用通道作为通信媒介。线程没有简单的通信媒介。
4延迟Goroutine可以以低延迟与其他例程通信。由于线程没有通信媒介,因此线程之间通信延迟较高。
5IDGoroutine没有任何线程本地存储,也没有唯一的ID。线程具有线程本地存储和唯一的ID。
6调度Goroutine是协作式调度的。线程是抢占式调度的。
7启动Goroutine具有更快的启动时间。线程具有更慢的启动时间。
8Goroutine具有可增长的分段栈。线程没有可增长的分段栈。

更新于:2019年11月28日

804 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告