协程是 go 的轻量级并发原语。使用方法:使用 go 关键字创建协程。通过管道或其他方式同步协程。使用 runtime 包控制协程。协程在完成任务后自动结束。优势:高并发性轻量级内存消耗少提高代码可读性
Go 协程:用法详解
协程是什么?
协程是 Go 中的一种并发原语,它是一种轻量级线程,可以协同工作。它比传统线程更轻量级,内存消耗更少,可以让程序同时处理多个任务。
如何使用协程?
1. 创建协程
要创建协程,可以使用 go 关键字:
go func() {
// 协程代码
}
2. 同步协程
协程之间可以通过管道或其他同步机制进行通信。
管道
管道是一种双向通信机制,可以用来传递值。
// 创建管道
ch := make(chan int)
// 启动协程
go func() {
// 将值发送到管道
ch <p><strong>3. 控制协程</strong></p><p>可以使用 runtime 包中的函数来控制协程。</p>
- runtime.NumGoroutine():返回正在运行的协程数量。
- runtime.Gosched():让出当前协程的执行权,允许其他协程运行。
4. 结束协程
协程在完成其任务后会自动结束。也可以使用 panic 或 runtime.Goexit() 显式结束协程。
优势
使用协程有以下优势:
- 高并发性
- 轻量级
- 内存消耗少
- 更好的代码可读性
示例
在以下示例中,我们使用协程并行地计算斐波那契数列的第 10 个和第 20 个值:
package main
import (
"fmt"
)
func fib(n int) int {
if n <p>通过使用协程,我们能够同时计算两个斐波那契数,从而提高了程序的效率。</p>