Junior — Middle
Ի՞նչ իրադարձություններ և նշաններ կարելի է օգտագործել Go լեզվում goroutine-ների հետ փոխազդեցություն համար։
sobes.tech AI
Պատասխան AI-ից
Go լեզվում, գորուտինների հետ փոխազդեցության համար օգտագործվում են հետևյալ հիմնական մեխանիզմները:
- Ճանալներ (channels) — հիմնական միջոց տվյալների և ազդանշանների փոխանցման համար գորուտինների միջև: Ճանալների միջոցով կարելի է ուղարկել և ստանալ արժեքներ, ինչը թույլ է տալիս սինխրոնիզացիա:
ch := make(chan int)
go func() {
ch <- 42 // արժեք ուղարկել
}()
val := <-ch // արժեք ստանալ
- Կոնտեքստ (context.Context) — օգտագործվում է գորուտինների կյանքի տևողությունը կառավարելու, գործողությունները չեղյալ հայտարարելու և չեղյալ հայտարարելու ազդանշաններ փոխանցելու համար:
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
select {
case <-ctx.Done():
// չեղյալ հայտարարումի մշակումը
}
}(ctx)
cancel() // չեղյալ հայտարարության ազդանշան
-
sync.WaitGroup — սպասելու համար գորուտինների խմբի ավարտին:
-
Համակարգային ազդանշաններ —
os/signalփաթեթի միջոցով կարելի է բռնել համակարգային ազդանշաններ և փոխանցել գորուտիններին ճիշտ ավարտի համար:
Այսպիսով, հիմնական "պատահականություններ" փոխազդեցության համար են՝ ուղարկում/ստանում գործողությունները ճանալների միջոցով, չեղյալ հայտարարում՝ կոնտեքստի միջոցով և համակարգային ազդանշաններ։