Dalam pengaturcaraan serentak Go, mekanisme penyegerakan adalah kunci untuk memastikan integriti data yang dikongsi. Ia menyediakan pelbagai jenis terbina dalam, termasuk: Mutex (Mutex): menyediakan akses eksklusif kepada kunci baca-tulis: membenarkan berbilang goroutine membaca pada masa yang sama tetapi hanya satu goroutine boleh menulis data pembolehubah: digunakan untuk Menyelaras menunggu dan bangun di antara goroutine.
Mekanisme penyegerakan dalam fungsi Go pengaturcaraan serentak
Dalam pengaturcaraan serentak Go, apabila berbilang goroutine (benang ringan di Golang) mengendalikan data dikongsi pada masa yang sama, mekanisme penyegerakan diperlukan untuk memastikan data integriti . Go menyediakan pelbagai jenis penyegerakan terbina dalam untuk menyelaraskan akses goroutine.
1. Mutex
Mutex (mutex lock) ialah mekanisme penyegerakan paling asas, yang menyediakan akses eksklusif kepada data kongsi. Hanya satu goroutine boleh menahan mutex pada satu masa, memastikan operasi atom pada data yang dikongsi. Kunci Baca-tulis Ini meningkatkan prestasi serentak sambil memastikan integriti data.
import ( "fmt" "sync" ) func main() { var count int var mu sync.Mutex for i := 0; i < 1000; i++ { go func(i int) { mu.Lock() count++ mu.Unlock() }(i) } fmt.Println("Count:", count) // 输出:1000 }
3. Pembolehubah keadaan
Pembolehubah keadaan (cond) digunakan untuk menyelaraskan menunggu dan bangun antara goroutine. Apabila goroutine memenuhi syarat tertentu, ia boleh membangunkan goroutine menunggu keadaan itu.
rreeeeAtas ialah kandungan terperinci Apakah mekanisme penyegerakan dalam pengaturcaraan serentak fungsi Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!