Junior — Middle
Go tilida Mutex yordamida o'zaro chiqarish mexanizmi qanday amalga oshiriladi?
sobes.tech AI
AIdan javob
Go tilida, o'zaro chiqarish (mutex) ni amalga oshirish uchun sync.Mutex turi ishlatiladi. Bu, kodning kritik bo'limlarini bir vaqtning o'zida bir nechta gorutinlar tomonidan kirishdan himoya qiladi va raqiblik shartlarini oldini oladi.
Asosiy operatsiyalar:
Lock()— mutexni bloklaydi, boshqa gorutinlarning kirishini to'xtatadi.Unlock()— mutexni ochadi, boshqa gorutinlarga davom etishga imkon beradi.
Foydalanish misoli:
package main
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
mu.Lock() // Mutexni bloklaydi
counter++
fmt.Println("Hisoblagich:", counter)
mu.Unlock() // Mutexni ochadi
}
Ko'p ipli muhitda, mutex faqat bir goroutine Lock() va Unlock() orasidagi kodni bajarishini kafolatlaydi, bu esa umumiy ma'lumotlarni noto'g'ri o'zgartirishning oldini oladi.