如何在Go 中實現變數的執行緒安全性
在Java 中,同步變數的概念保證只有單一執行緒可以執行任何給定時間的特定代碼塊。然而,Go 並沒有提供明確的同步關鍵字。
基本原理
Go 提倡一種不同的線程同步方法,其指導原則是:「不要透過共享進行溝通」記憶;相反,透過交流來共享記憶。 」這意味著避免直接存取共享記憶體並選擇基於通訊的機制,例如通道。
基於互斥鎖的同步
如果您遇到需要互斥鎖的場景,這是如何實現它的轉:
var ( mu sync.Mutex protectMe int ) func getMe() int { mu.Lock() me := protectMe mu.Unlock() return me } func setMe(me int) { mu.Lock() protectMe = me mu.Unlock() }
改進
基於溝通方法
Go鼓勵使用通道進行goroutine 間通信,從而消除對共享變數的需求。 >以上是如何在 Go 中實現線程安全:互斥體、原子或通道?的詳細內容。更多資訊請關注PHP中文網其他相關文章!