Junior
რა უზრუნველყოფს Go-ში თხელი უსაფრთხოებას (thread safety)?
sobes.tech AI
პასუხი AI-სგან
Go-ში თანმიმდევრული უსაფრთხოება რამდენიმე მექანიზმით არის უზრუნველყოფილი:
- Goroutines — მსუბუქი ნაკადები, რომლებიც საშუალებას აძლევენ კოდის პარალელურად შესრულებას.
- კანალები — ძირითადი ინსტრუმენტი მონაცემების უსაფრთხო გაცვლისთვის goroutine-ებს შორის, გარეშე საერთო ცვლადების გამოყენების.
- sync პაკეტი — შეიცავს სინქრონიზაციის primitives-ებს, როგორიცაა
Mutexკრიტიკული სექციების დასაკეტად,RWMutexწაკითხვასა და დაწერაზე დაშლილი ბლოკირებისათვის დაWaitGroupჯგუფის goroutine-ების დასრულების მოსალოდნელობისთვის.
მაგალითი — საერთო რესურსის დაცვის mutex-ის გამოყენებით:
import (
"sync"
)
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
ამ გზით, Go-ში თანმიმდევრული უსაფრთხოება მიღწეულია goroutine-ების, კანალებისა და sync პაკეტის primitives-ების სწორად გამოყენებით.