1 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
package main
import "fmt"
const ROUTINE_LIMIT = 250
func main() {
channelCounter := make(chan bool, ROUTINE_LIMIT)
for {
select {
//will add till 250 after that it will block
case channelCounter <- true:
fmt.Println("added channel")
go startRoutine(channelCounter)
}
}
}
func startRoutine(channelCounter chan bool) {
/*
do your stuff
*/
//free the channel
<-channelCounter
}
您可以使用通道限制您的 goruotine 計(jì)數(shù)。一個(gè)用于記錄運(yùn)行的 goroutine 數(shù)量的通道。一旦工作完成,您可以讀取通道值以減少計(jì)數(shù)。
上面的程序就像一個(gè)粗略的示例代碼..(我認(rèn)為它涵蓋了一般想法)
- 1 回答
- 0 關(guān)注
- 90 瀏覽
添加回答
舉報(bào)