Go 并發執行
需要并發執行的場景有很多:爬蟲、拉取資料、更新資料…
Go作為天生高并發的語言,在使用并發時是比較方便的,
Demo案例
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
}
也可以把work func()引數去除,直接在doMyWork方法中呼叫業務邏輯,
運行結果
第 0 項正在執行
第 2 項正在執行
https://blog.csdn.net/LitongZero
第 0 項執行完畢
第 1 項正在執行
https://blog.csdn.net/LitongZero
第 1 項執行完畢
第 3 項正在執行
https://blog.csdn.net/LitongZero
https://blog.csdn.net/LitongZero
第 5 項正在執行
https://blog.csdn.net/LitongZero
第 2 項執行完畢
第 3 項執行完畢
第 5 項執行完畢
第 4 項正在執行
https://blog.csdn.net/LitongZero
第 4 項執行完畢
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/239109.html
標籤:區塊鏈
上一篇:行業大咖決議·TDChain是什么?怎么玩?靠譜嗎?
下一篇:MDF智能合約模式制度玩法介紹
