Sobes.tech
Junior — Middle

გორუტინებთან მუშაობის კონტექსტში რა არის ბლოკირებადი არაკავშირები და როგორ ხორციელდება ისინი.

sobes.tech AI

პასუხი AI-სგან

გორუტინების კონტექსტში ბლოკირებადი არაკოლექციური ზარები — ეს ოპერაციებია, რომლებიც მიმდინარე გორუტინას არ აიძულებს დაელოდოს რომელიმე ოპერაციის დასრულებას, რაც მას საშუალებას აძლევს განაგრძოს შესრულება. Go-ში ეს ხშირად დაკავშირებულია არხების გამოყენებასთან და select-ის კონსტრუქციასთან default-თან, რათა სცადოს მონაცემების გაგზავნა ან მიღება არხიდან ბლოკირების გარეშე, თუ ოპერაცია შეუძლებელია.

არაბლოკირებელი გაგზავნის მაგალითი არხში:

ch := make(chan int)

select {
case ch <- 1: // თუ არხი მზადაა მიიღოს მნიშვნელობა
    fmt.Println("გაგზავნილია")
default: // თუ გაგზავნა შეუძლებელია — არ ბლოკავთ
    fmt.Println("არხი დაკავებულია, არ ბლოკავთ")
}

ამ გზით, გორუტინა არ ბლოკდება, თუ ოპერაცია არხთან შეუძლებელია, და აგრძელებს მუშაობას. ეს საშუალებას აძლევს ეფექტურად მართოს კონკურენცია, მოლოდინის გარეშე.