Junior — Middle
Тавзеҳ диҳед, ки Read-Write блок (RWMutex) чист ва чӣ гуна барои идора кардани дастрасӣ ба маълумот истифода мешавад.
sobes.tech AI
Ҷавоб аз AI
قفل خواندن-نوشتن (RWMutex) در زبان برنامهنویسی Go یک مکانیزم همزمانسازی است که به چندین goroutine اجازه میدهد همزمان دادهها را بخوانند، در حالی که دسترسی انحصاری هنگام نوشتن را تضمین میکند.
- RLock() / RUnlock() — قفل برای خواندن. چندین goroutine میتوانند همزمان این قفل را نگه دارند.
- Lock() / Unlock() — قفل برای نوشتن. تنها یک goroutine میتواند آن را نگه دارد و در طول این مدت، هیچ خواندنی مجاز نیست.
این امر عملکرد را زمانی که عملیاتهای خواندن زیاد و نوشتن کم است، افزایش میدهد.
مثال استفاده:
var rwMutex sync.RWMutex
var data int
func readData() int {
rwMutex.RLock()
defer rwMutex.RUnlock()
return data
}
func writeData(val int) {
rwMutex.Lock()
defer rwMutex.Unlock()
data = val
}
در این مثال، چندین goroutine میتوانند همزمان readData() را فراخوانی کنند، اما اگر writeData() فراخوانی شود، تمام عملیاتهای خواندن و نوشتن تا پایان مسدود میشوند.