Junior — Middle
გთხოვთ, ახსნათ, რა არის ბლოკირება (Lock) mutex-ის კონტექსტში და რა მიზნით გამოიყენება.
sobes.tech AI
პასუხი AI-სგან
ბლოკირება (Lock) არის სინქრონიზაციის მექანიზმი, რომელიც გამოიყენება იმისთვის, რომ თავიდან აიცილოს რამდენიმე ნაკადის ან გორუტინის ერთდროული წვდომა საერთო რესურსზე, რათა თავიდან აიცილოს რბოლა და უზრუნველყოს მონაცემების სისწორე.
მიუტექსის (mutex) კონტექსტში, ბლოკირება ნიშნავს, რომ როდესაც ერთი ნაკადი იკავებს (lock) მიუტექსს, სხვა ნაკადები, რომლებიც ცდილობენ მის დაკავებას, დაელოდებიან, სანამ პირველი არ გაათავისუფლებს (unlock) მას.
მაგალითი Go-ში:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock() // იკავებს მიუტექსს
counter++ // კრიტიკული სექცია
mu.Unlock() // გაათავისუფლებს მიუტექსს
}
ასე რომ, ბლოკირება უზრუნველყოფს, რომ მხოლოდ ერთი ნაკადი ახორციელებს კოდის კრიტიკულ სექციას ერთდროულად.