Skip to content

Go 并发编程

Published: at 05:12 AMSuggest Changes

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
}

Previous Post
Go 后台运行方法
Next Post
Go 语言 Cron 定时任务详解