我需要通过maxTasks变量限制运行功能。您能检查一下我的答案并可能进行调整吗?
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
maxTasks := 10
var tasks []func()
for x := 0; x < 50; x++ {
fmt.Println("add new task with num ", x)
tasks = append(tasks, func(x int) func() {
fmt.Println("create function with ", x)
return func() {
worktime := rand.Intn(10)
time.Sleep(time.Duration(worktime) * time.Second)
fmt.Println("current task:",x )
fmt.Println(" with worktime ",worktime)
}
}(x))
}
//tasks[0]()
ch := make(chan int, maxTasks)
for _, task := range tasks {
go func(t func()) {
ch <- 1
t()
fmt.Println("current task:",len(ch))
<- ch
}(task)
}
time.Sleep(10000 * time.Second)
}