Sobes.tech
Junior — Middle

Kako se implementira mehanizam međusobnog isključivanja pomoću Mutex u jeziku Go?

sobes.tech АИ

Одговор од АИ

U jeziku Go, za implementaciju međusobnog isključivanja (mutex) koristi se tip sync.Mutex. On omogućava zaštitu kritičnih delova koda od istovremenog pristupa od strane više gorutina, čime se sprečavaju uslovi trke.

Glavne operacije:

  • Lock() — zaključava mutex, onemogućavajući drugim gorutinama pristup.
  • Unlock() — otključava mutex, omogućavajući drugim gorutinama da nastave.

Primer upotrebe:

package main

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    counter := 0

    mu.Lock() // Zaključava mutex
    counter++
    fmt.Println("Brojač:", counter)
    mu.Unlock() // Otključava mutex
}

U višestrukim nitnim okruženjima, mutex garantuje da samo jedna gorutina istovremeno izvršava kod između Lock() i Unlock(), čime se sprečavaju netačne promene zajedničkih podataka.