Dalam pengaturcaraan serentak, adalah penting untuk memastikan ketekalan data. Go menyediakan kunci mutex dan operasi atom untuk mengurus data yang dikongsi. Mutexes membenarkan satu goroutine mengakses data pada satu masa, manakala operasi atom menjamin atomicity dan keterlihatan penulisan memori individu. . Go menyediakan beberapa mekanisme terbina dalam, seperti kunci mutex dan nilai atom, untuk membantu pembangun mengurus data kongsi dan memastikan ketekalannya.
Mutex
Mutex ialah mekanisme yang membenarkan goroutine mengakses data yang dikongsi pada satu masa. Apabila goroutine memperoleh mutex, goroutine lain akan disekat sehingga mutex dilepaskan.import ( "fmt" "sync" ) var ( mu sync.Mutex counter int ) func incrementCounter() { mu.Lock() counter++ mu.Unlock() } func main() { // 创建多个goroutine并行增加计数器 for i := 0; i < 1000; i++ { go incrementCounter() } // 等待所有goroutine完成 time.Sleep(100 * time.Millisecond) fmt.Println("最终计数器值:", counter) }
import ( "fmt" "sync/atomic" ) var counter int64 func incrementCounter() { atomic.AddInt64(&counter, 1) } func main() { // 创建多个goroutine并行增加计数器 for i := 0; i < 1000; i++ { go incrementCounter() } // 等待所有goroutine完成 time.Sleep(100 * time.Millisecond) fmt.Println("最终计数器值:", counter) }
Atas ialah kandungan terperinci Go Concurrent Programming: Ketekalan Data dan Operasi Atom. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!