golang用通道實現信號量,控制並發個數


 

func main() { var wg sync.WaitGroup sem := make(chan struct{}, 2) // 最多允許2個並發同時執行 taskNum := 10 for i := 0; i < taskNum; i++ { wg.Add(1) go func(id int) { defer wg.Done() sem <- struct{}{} // 獲取信號 defer func() { <-sem }() // 釋放信號 // do something for task time.Sleep(time.Second * 2) fmt.Println(id, time.Now()) }(i) } wg.Wait() }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM