本节重点:
- 学会 Goroutine 的基本使用
Go 是一种并发语言,Go 中使用 Goroutine
和 channel
处理并发。接下来我们一起来学习 Goroutine
。
什么是 Goroutine?
Goroutines 是与其他函数或方法同时运行的函数或方法。Goroutines 可以被认为是轻量级线程。与线程相比,创建 Goroutine 的成本很小。因此,Go 应用程序通常会同时运行数千个 Goroutine。
Goroutines 相对于线程的优势
- 与线程相比,Goroutines 非常便宜。它们的堆栈大小只有几 kb,堆栈可以根据应用程序的需要增长和缩小,而在线程的情况下,堆栈大小必须指定并固定。
- Goroutine 被多路复用到更少数量的 OS 线程。一个包含数千个 Goroutine 的程序中可能只有一个线程。如果该线程中的任何 Goroutine 阻塞等待用户输入,则创建另一个 OS 线程并将剩余的 Goroutine 移动到新的 OS 线程。所有这些都由运行时处理,我们作为程序员从这些复杂的细节中抽象出来,并获得了一个干净的 API 来处理并发性。
- Goroutines 使用通道进行通信。通道通过设计防止在使用 Goroutine 访问共享内存时发生竞争条件。通道可以被认为是 Goroutine 进行通信的管道。我们将在下一个教程中详细讨论频道。
如何启动一个 Goroutine?
使用关键字为函数或方法调用添加前缀go,您将有一个新的 Goroutine 并发运行。
让我们创建