golang如何結束goroutine
下面的程式碼開啟了10個消費者,消費者接收某訊息停止所有 goroutine 怎麼實現?
package main
import (
"sync"
"fmt"
"strconv"
"time"
//"runtime"
)
var wait sync.WaitGroup
var input = make(chan string)
func inputConsumer() {
for in := range input {
fmt.Println(in)
if in=="5" {
//這裡結束所有goroutines
}
//println(runtime.NumGoroutine(),"===")
time.Sleep(time.Second)
wait.Done()
}
}
var inputGroup sync.WaitGroup
func main() {
//控制goroutine數量為10個
for i := 0; i <10; i++ {
go inputConsumer()
}
inputGroup.Add(1)
go func(){
for j:=1 ;j<20;j++ {
wait.Add(1)
input <- strconv.Itoa(j)
}
inputGroup.Done()
}()
inputGroup.Wait()
wait.Wait()
}
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- Golang 的 goroutine 是如何實現的?Golang
- 關於golang的goroutine schedulerGolang
- Golang —— goroutine(協程)和channel(管道)Golang
- Golang 獲取 goroutine id 完全指南Golang
- Golang1.7 Goroutine原始碼分析Golang原始碼
- Golang 入門 : 等待 goroutine 完成任務Golang
- 「Golang成長之路」併發之GoroutineGolang
- GOLANG使用Context管理關聯goroutineGolangContext
- 第 12 期 golang 中 goroutine 的排程Golang
- 說說Golang goroutine併發那些事兒Golang
- Golang併發程式設計——goroutine、channel、syncGolang程式設計
- Golang語言並行設計的核心goroutineGolang並行
- [杭州] 阿里中介軟體招 golang 工程師 (已結束)阿里Golang工程師
- 如何防止 goroutine 洩露Go
- golang 利用 WaitGroup 控制多個 goroutine 同時完成GolangAI
- Golang-goroutine02(MPG模式+設定CPU數目)Golang模式
- golang在goroutine裡的錯誤怎麼傳遞?Golang
- golang pprof 監控系列(4) —— goroutine thread 統計原理Golangthread
- 如何防止 goroutine 洩露(二)Go
- 使goroutine同步的方法總結Go
- 【已結束】[杭州] 阿里中介軟體招Golang和Java工程師阿里GolangJava工程師
- Python如何強制結束迴圈?Python
- 如何準確結束RMAN備份程式
- Golang協程無法固定goroutine的最大數目解決Golang
- 如何優雅的結束 adb logcat??GC
- Golang原始碼學習:排程邏輯(二)main goroutine的建立Golang原始碼AI
- goroutineGo
- java 如何實現等待子執行緒結束Java執行緒
- Android開發中如何結束所有的activityAndroid
- Golang併發程式設計優勢與核心goroutine及注意細節Golang程式設計
- 結束程式的命令
- SQL之結束篇SQL
- 什麼是 Goroutine ?又該如何停止它?Go
- 如何在 Linux 系統中結束程式或是中止程式Linux
- Windows系統如何批量結束工作管理員的程式樹?Windows
- Windows系統如何批次結束工作管理員的程序樹?Windows
- 圓滿結束:3.15【J+】——即時通訊與golang專場(圖文報導)Golang
- js jquery 結束迴圈JSjQuery