Junior — Middle
Vai vari paskaidrot, kas ir savstarpēja izslēgšana (Mutex) un kā tā darbojas?
sobes.tech AI
Atbilde no AI
Mutual exclusion (Mutex) ir mehānisms, kas garantē, ka noteiktā brīdī tikai viena gorutina (šūna) var piekļūt noteiktam resursam vai koda kritiskajai sekcijai.
Go valodā tam izmanto sync.Mutex tipu. Kad gorutina izsauc Lock(), tā bloķē mutexu, un citas gorutinas, kas mēģina izsaukt Lock(), gaidīs, līdz mutex tiks atbloķēts ar Unlock().
Piemērs:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Šajā piemērā increment droši palielina counter vērtību, novēršot vienlaicīgu piekļuvi no vairākām gorutīnām.