在Go語言中,可以通過使用有緩沖的通道(buffered channel)來限制協程的數量。具體步驟如下:
maxGoroutine := 10
semaphore := make(chan struct{}, maxGoroutine)
go func() {
// 嘗試向通道發送信號,如果通道已滿則阻塞當前協程
semaphore <- struct{}{}
defer func() {
// 協程結束后從通道釋放一個空位
<-semaphore
}()
// 協程的具體邏輯
// ...
}()
注意事項: