多协程Goexit()示例
时间: 2023-11-10 22:05:26 浏览: 29
下是一个使用多协程和Goexit()函数的示例程序:
```go
package main
import (
"fmt"
"runtime"
)
func worker(id int) {
fmt.Printf("Worker %d starting\n", id)
for i := 0; i < 5; i++ {
fmt.Printf("Worker %d: %d\n", id, i)
runtime.Gosched()
}
fmt.Printf("Worker %d done\n", id)
runtime.Goexit()
}
func main() {
fmt.Println("Starting program")
for i := 1; i <= 3; i++ {
go worker(i)
}
runtime.Goexit()
fmt.Println("Program ended")
}
```
这个程序启动了3个协程来执行`worker`函数。每个`worker`函数都会打印5个数字并调用`Goexit()`函数来结束自己的协程。
在`main`函数中,我们也调用了`Goexit()`函数来等待所有的协程结束并结束整个程序。
程序运行的结果可能如下:
```
Starting program
Worker 1 starting
Worker 2 starting
Worker 3 starting
Worker 1: 0
Worker 2: 0
Worker 3: 0
Worker 1: 1
Worker 2: 1
Worker 3: 1
Worker 1: 2
Worker 2: 2
Worker 3: 2
Worker 1: 3
Worker 2: 3
Worker 3: 3
Worker 1: 4
Worker 2: 4
Worker 3: 4
Worker 1 done
Worker 2 done
Worker 3 done
Program ended
```
可以看到,每个`worker`协程都会打印出5个数字,并在完成后结束自己的协程。当所有的协程都结束后,程序才会结束。