go 的并发运行比想象的要简单很多,在要运行的语句前面加上 go 就可以了
go func() {
// 在这里运行
}()
go func() {
// 在这里运行
}()
网上找的方法还未实验
package main
import (
"fmt"
)
func main() {
ConcurrentWork(5, func() {
// ...业务逻辑
fmt.Println("https://blog.csdn.net/LitongZero")
})
}
/**
* @Description: 开启多线程执行
* @param total 启动线程数
* @param work 需要执行的方法
*/
func ConcurrentWork(total int, work func()) {
c := make(chan int) //设置多线程通道
// 循环创建线程
for i := 0; i <= total; i++ {
go doMyWork(i, c, work)
}
// 等待所有线程结束
for i := 0; i <= total; i++ {
fmt.Printf("第 %d 项执行完毕\n", <-c)
}
}
func doMyWork(i int, page chan int,work func()) {
fmt.Printf("第 %d 项正在执行\n", i)
work()
// 返回执行完毕
page <- i
}
上一篇
Go log.Fatal 导致程序提前退出的问题
在使用 Go 语言编写代码时,使用 log.Fatal 打印 cmd 命令错误信息导致程序直接退出,无法打印后续的 cmdStdout 和 cmdStderr 信息。log.Fatal 函数会打印错误信息后直接调用 os.Exit(1) 终止程序运行。将 log.Fatal(err) 修改为 log.Println(err) 后问题解决。
下一篇
Go 语言 Cron 定时任务详解
本文介绍如何在 Go 语言中使用 robfig/cron 包实现定时任务,包括代码示例和对 V3 版本更新的说明。文章还提供了官方文档和其它参考文章的链接,并讲解了如何处理 V3 版本中新增的秒级定时任务配置。