Sobes.tech
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.