使用Goroutine 高效處理值並將結果收集到切片中
goroutine 的使用可以成為Go 程式設計中的變革性元素,使並發任務執行和高效處理。然而,正確的實現對於避免潛在的陷阱至關重要。
問題:
當嘗試在程式碼庫中使用 goroutine 時,出現「致命錯誤:所有 goroutine 都處於睡眠狀態 -僵局!」出現。目的是同時處理清單中的值,然後將處理結果累積到新清單中。然而,在累積階段,困難就出現了。
程式碼分解:
提供的程式碼片段包含幾個基本元素:
解決方案:
錯誤是由兩個問題引起的:過早等待工作線程完成和通道關閉時機不當。以下修改解決了這些問題:
此外,為了風格凝聚力,請考慮重組newSample 作為結果生成的同步函數,導致以下結果代碼:
這種修改後的方法提高了代碼可讀性,簡化了測試並簡化了並發管理,從而能夠清楚地識別wg.Done() 等關鍵操作。
以上是使用 Goroutine 處理值並將結果收集到切片中時如何避免死鎖?的詳細內容。更多資訊請關注PHP中文網其他相關文章!