import "fmt"
func main() {
cnp := make(chan func(), 10)
for i := 0; i < 4; i++ {
go func() {
for f := range cnp {
f()
}
}()
}
cnp <- func() {
fmt.Println("Here")
}
fmt.Println("Here1")
}
我有几个问题我想不出答案
浏览文档和 YouTube 频道
如果您尝试使用工作模式,也许您应该利用
WaitGroup
。
import (
"fmt"
"sync"
)
func main() {
// receive channel
cnp := make(chan func(), 10)
workerCount := 4
var wg sync.WaitGroup
wg.Add(workerCount)
for i := 0; i < 4; i++ {
go func() {
defer wg.Done()
for f := range cnp {
f()
}
}()
}
// produce values
cnp <- func() {
fmt.Println("Here")
}
// once done, close channel to stop goroutines
close(cnp)
// Wait for all goroutines to finish
wg.Wait()
fmt.Println("Here1")
}