0%

Go 并发运行

go 的并发运行比想象的要简单很多,在要运行的语句前面加上 go就可以了

1
2
3
4
5
6
go func() {
// 在这里运行
}()
go func() {
// 在这里运行
}()

网上找的方法还未实验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
}