Go 是否提供了相當於 Java 的 ThreadLocal 來進行 Goroutine 資料管理?
在 Java 中,ThreadLocal 提供了一種將資料與特定執行緒關聯起來的方法,允許從該執行緒內的任何點存取該資料。當 Go 使用 goroutine 時,自然會出現一個問題:Go 是否提供了類似的解決方案來管理特定於 goroutine 的資料?
Go 的方法
與 Java 不同,Go 運行時和標準庫不提供用於 goroutine 本地儲存或 goroutine識別碼的內建機制,以促進此類操作
第三方解決方案
為了解決這個問題,社區開發了像gls 這樣的第三方庫,它為goroutine 本地儲存提供了一個有趣的解決方案。雖然有些人可能會發現這個包非常規,但其他人卻欣賞它巧妙的方法。
建議方法
雖然 gls 提供了一個選項,但 Go 團隊通常建議不要依賴 goroutine local貯存。相反,他們建議顯式傳遞上下文作為函數參數。官方部落格文章和上下文包文件進一步詳細闡述了這種方法。透過遵循此指南,開發人員可以以一致且建議的方式有效管理特定於 Goroutine 的資料。
以上是Go 有 ThreadLocal 等價的 Goroutine 特定數據嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!