Di Golang, kunci adalah salah satu mekanisme penting untuk kawalan konkurensi. Kunci pada asasnya ialah primitif penyegerakan yang digunakan untuk mengawal akses kepada sumber yang dikongsi. Dalam aplikasi praktikal, kunci yang biasa digunakan termasuk mutex (Mutex) dan kunci baca-tulis (RWLock). Artikel ini akan memperkenalkan pengalaman menggunakan kunci baca-tulis dan kunci mutex dalam fungsi Golang.
1. Prinsip dan penggunaan kunci mutex
Kunci Mutex merujuk kepada kunci eksklusif yang hanya membenarkan satu Goroutine mengakses pada masa yang sama. Dalam aplikasi praktikal, kunci mutex sering digunakan dalam senario berikut:
(1) Apabila berbilang Goroutines membaca dan menulis sumber yang dikongsi serentak, untuk memastikan ketekalan data, kunci mutex perlu digunakan untuk kawalan serentak ;
(2) Apabila mengakses data seperti fail, segmen kod, fail konfigurasi, dll., akses eksklusif diperlukan untuk memastikan integriti data.
Di Golang, langkah-langkah untuk menggunakan kunci mutex adalah seperti berikut:
(1) Mula-mula anda perlu mentakrifkan objek kunci mutex:
var mutex sync.Mutex
(2) Anda kemudian boleh menggunakan kaedah Kunci untuk mengunci mutex:
mutex.Lock()
(3) Lakukan operasi dalam blok kod yang perlu diakses sumber kongsi:
sharedResource++
(4) Akhir sekali, gunakan kaedah Buka Kunci untuk membuka kunci mutex:
mutex.Unlock()
Sepatutnya ambil perhatian bahawa apabila menggunakan mutex Untuk memastikan ketepatan kod, kaedah Kunci dan Buka Kunci mesti muncul secara berpasangan.
2. Prinsip dan penggunaan kunci baca-tulis
Langkah-langkah yang berbeza digunakan untuk membaca dan menulis serentak digunakan secara meluas dalam senario konkurensi tinggi. Dalam aplikasi praktikal, kunci baca-tulis sering digunakan dalam senario berikut:
(1) Untuk senario di mana operasi baca lebih kerap daripada operasi tulis, menggunakan kunci baca-tulis boleh mempercepatkan pelaksanaan kod; >
(2 ) Apabila berbilang Goroutine membaca data yang sama secara serentak, tidak perlu melakukan operasi mengunci dan membuka kunci. Di Golang, langkah-langkah untuk menggunakan kunci baca-tulis adalah seperti berikut: (1) Mula-mula, anda perlu mentakrifkan objek kunci baca-tulis: var rwLock sync.RWLock(2) Kemudian anda boleh menggunakan kaedah kunci baca RLock atau kaedah kunci tulis Lock untuk mengunci kunci baca-tulis: rwLock.RLock()
rwLock.Lock()
rwLock.RUnlock()
rwLock.Unlock()
Atas ialah kandungan terperinci Pengalaman menggunakan kunci baca-tulis dan kunci mutex bagi fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!