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具有可增长的分段栈。 | 线程没有可增长的分段栈。 |
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP