golang协程
时间: 2023-07-25 20:18:02 浏览: 235
Go 语言中的协程(Goroutine)是一种轻量级的线程,可以在程序内部并发执行。相比于传统的线程,协程的优势在于其轻量级,可以创建大量的协程而不会导致系统负载过高。
在 Go 语言中,可以通过关键字 go 来创建一个协程,例如:
```
func main() {
go func() {
fmt.Println("Hello, goroutine!")
}()
time.Sleep(1 * time.Second) // 等待协程执行完成
}
```
在上面的代码中,通过关键字 go 创建了一个匿名函数的协程,该协程会输出 "Hello, goroutine!"。由于协程是异步执行的,因此需要使用 `time.Sleep()` 等待协程执行完成。
除了使用关键字 go 创建协程外,还可以使用 `sync.WaitGroup` 来等待多个协程的执行完成,例如:
```
func main() {
var wg sync.WaitGroup
for i := 0; i < 10; i++ {
wg.Add(1) // 添加一个协程
go func(i int) {
fmt.Printf("Hello, goroutine %d!\n", i)
wg.Done() // 协程执行完成
}(i)
}
wg.Wait() // 等待所有协程执行完成
}
```
在上面的代码中,使用 `sync.WaitGroup` 来等待 10 个协程执行完成,每个协程输出 "Hello, goroutine i!",其中 i 为协程的编号。
总之,协程是 Go 语言中非常重要的并发编程特性,可以大大提高程序的并发性能和可维护性。
阅读全文