有一個程式生成資料。還有許多處理http回應的go例程。我希望將生成的資料傳遞給所有 http 處理程式例程。所有發送的資料都是一樣的。我想到了兩種解決方案。使用通道管道扇出或使用互斥鎖和條件變數。我擔心以前的方式是否需要記憶體分配才能將資料放入通道。
我應該選擇什么?
uj5u.com熱心網友回復:
您的用例聽起來像是從渠道中受益。通常,當需要在 go 例程之間進行通信時,首選通道。聽起來像是作業池的經典示例。
互斥體用于保護一塊記憶體,因此一次只有 1 個 goroutine 可以訪問/修改它。很多時候,這與人們想要的相反,即并行化執行。
一個好的經驗法則是在它真正成為問題之前不要擔心優化(記憶體分配與否)。過早優化是一種常見的反模式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/404467.html
標籤:
