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基礎]GoroutineGolang
- 關於golang的goroutine schedulerGolang
- Golang —— goroutine(協程)和channel(管道)Golang
- Golang 獲取 goroutine id 完全指南Golang
- Golang 入門 : 等待 goroutine 完成任務Golang
- 「Golang成長之路」併發之GoroutineGolang
- Golang併發程式設計——goroutine、channel、syncGolang程式設計
- 第 12 期 golang 中 goroutine 的排程Golang
- 說說Golang goroutine併發那些事兒Golang
- Golang語言並行設計的核心goroutineGolang並行
- golang 利用 WaitGroup 控制多個 goroutine 同時完成GolangAI
- Python如何強制結束迴圈?Python
- 如何優雅的結束 adb logcat??GC
- golang pprof 監控系列(4) —— goroutine thread 統計原理Golangthread
- Golang-goroutine02(MPG模式+設定CPU數目)Golang模式
- 如何防止 goroutine 洩露Go
- 使goroutine同步的方法總結Go
- 結束OI
- 考研結束
- 如何防止 goroutine 洩露(二)Go
- Golang語言goroutine協程併發安全及鎖機制Golang
- Golang協程無法固定goroutine的最大數目解決Golang
- Golang原始碼學習:排程邏輯(二)main goroutine的建立Golang原始碼AI
- goroutineGo
- Golang併發程式設計優勢與核心goroutine及注意細節Golang程式設計
- 如何在 Linux 系統中結束程式或是中止程式Linux
- Windows系統如何批量結束工作管理員的程式樹?Windows
- Windows系統如何批次結束工作管理員的程序樹?Windows
- 什麼是 Goroutine ?又該如何停止它?Go
- 在Linux中,如何檢視和結束正在執行的程序?Linux
- [SHELL] shell 實現多程式後,如何等待所有程式結束
- golang omitempty 總結GolangMIT
- lua版promise實現 - 結束Promise
- 裝修終於結束了
- Activiti判斷流程是否結束
- webpack 從開始到結束Web
- golang併發channel使用sync.WaitGroup保證所有協程結束並處理額外業務GolangAI
- 大話 goroutineGo