chatGPT生成代码--go启动多线程
提问:用golang写一个启动函数 createTask(names[]string), 函数功能:启动n个线程,线程数为names的长度,线程名称为names的值,需要等待所有线程启动完成后才执行函数返回
代码:以下是一个使用Golang编写的 createTask
函数,它会启动与names
切片中的名称数量相等的goroutine,并等待它们全部启动完成后才会返回:
package main
import (
"fmt"
"sync"
)
func createTask(names []string) {
var wg sync.WaitGroup
for _, name := range names {
wg.Add(1)
go func(n string) {
defer wg.Done()
fmt.Printf("线程 %s 启动n", n)
// 在这里可以执行线程需要做的工作
}(name)
}
wg.Wait() // 等待所有线程完成
fmt.Println("所有线程已启动完成,函数返回")
}
func main() {
names := []string{"Thread1", "Thread2", "Thread3"}
createTask(names)
}