. tiada satu pun pelaksanaan berlaku. Golang menyediakan beberapa operasi atom, seperti fungsi operasi atom dalam pakej atom, yang boleh digunakan untuk memastikan keatoman operasi penetapan pembolehubah.
Artikel ini akan meneroka ketumpatan tugasan pembolehubah di Golang dan menunjukkan serta mengesahkannya melalui contoh kod khusus.
1. Fungsi operasi atom di GolangPakej atom Golang menyediakan satu siri fungsi operasi atom, yang paling biasa digunakan adalah seperti berikut:
atomic.AddInt32(&var, val): Tambahkan val secara atom pada nilai var dan mengembalikan nilai baharu.
atomic.AddUint32(&var, val): Menambahkan val secara atom pada nilai var dan mengembalikan nilai baharu.
package main import ( "fmt" "sync" "sync/atomic" ) var ( count int32 wg sync.WaitGroup ) func increaseCount() { for i := 0; i < 10000; i++ { atomic.AddInt32(&count, 1) } wg.Done() } func main() { wg.Add(2) go increaseCount() go increaseCount() wg.Wait() fmt.Println("Count: ", count) }
Count: 20000
Anda dapat melihat bahawa disebabkan penggunaan fungsi operasi atom atomic.AddInt32, keatoman operasi kenaikan automatik pada pembolehubah kiraan dijamin, dan keputusan yang betul akhirnya diperolehi.
Mari kita lihat contoh tanpa jaminan atomicity.
package main import ( "fmt" "sync" ) var ( count int32 wg sync.WaitGroup ) func increaseCount() { for i := 0; i < 10000; i++ { count += 1 // count的自增操作不是原子性的 } wg.Done() } func main() { wg.Add(2) go increaseCount() go increaseCount() wg.Wait() fmt.Println("Count: ", count) }
Dalam kod di atas, kiraan += 1 operasi dalam fungsi increaseCount bukan atom, jadi keadaan perlumbaan mungkin berlaku semasa pelaksanaan serentak, mengakibatkan keputusan yang salah.
Jalankan kod di atas, hasilnya mungkin seperti berikut (hasilnya mungkin berbeza setiap kali):
Count: 15923
Anda boleh melihat bahawa kerana atomicity operasi auto-increment kiraan tidak dijamin, keputusan akhir adalah salah.
Melalui contoh kod di atas, kita boleh membuat kesimpulan berikut:
Pakej atom dalam Golang menyediakan beberapa fungsi operasi atom, yang boleh digunakan untuk memastikan keatoman operasi penetapan pembolehubah. Dalam pengaturcaraan serentak, menggunakan fungsi operasi atom boleh mengelakkan keadaan perlumbaan dan memastikan ketepatan data.Atas ialah kandungan terperinci Terokai ciri-ciri keatoman tugasan pembolehubah Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!