在go中螺紋goroutines:同時運行常數
考慮一個具有大量任務的情況,例如處理從mysql數據庫中檢索到的數據。一種天真的方法可能會引發大量的平行goroutines,同時執行數十萬個任務。相比之下,所需的行為將同時運行的goroutines限制為固定的計數(例如20)。
這種受控的並發模式被稱為“邊界並行性”。在GO中實現此模式需要採用一個空結構通道作為信號量,決定了最大的並發工人goroutines數量。這是一個插圖:package main 導入“ FMT” func main(){ maxgoroutines:= 10 後衛:= make(chan struct {},maxgoroutines) 對於我:= 0;我此實現可確保同時執行指定數量的Goroutines。結果,當工人goroutine結束時,立即啟動了新的goroutine,維持所需的並發級別。
“ go並發模式”文章在其“有限的並行性”部分中進一步探索了這一概念,從而為這一重要的洞察力提供了更深入的見解。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3