Junior
Чӣ дар Go кафолат медиҳад бехатарии сатрҳо (thread safety)?
sobes.tech AI
Ҷавоб аз AI
Гаргутинҳо (goroutines) — сабукрави равандҳо, ки имкон медиҳанд, ки код дар параллел иҷро шавад.
Каналу (channels) — асосии восита барои мубодилаи бехатарии маълумот байни гаргутинҳо бе истифодаи тағйирёбани умумӣ.
Пакети sync — дорои primitives-и ҳамоҳангсозӣ, ба монанди Mutex барои бастани қисмҳои критикӣ, RWMutex барои тақсим кардани бастаҳо барои хондан ва навиштан ва WaitGroup барои интизор шудан ба анҷоми гурӯҳи гаргутинҳо.
Масалан, истифодаи mutex барои ҳимояи манбаи умумӣ:
import (
"sync"
)
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Инчунин, бо истифода аз ин механизмҳо, бехатарии параллел дар Go ба даст меояд.