|
Go’da holatni boshqarishning asosiy mexanizmi kanallar
orqali aloqa qilishdir. Buni biz, masalan,
worker pools misolida ko’rgan edik. Ammo
holatni boshqarishning yana bir nechta usullari mavjud.
Bu yerda biz bir nechta goroutinalar tomonidan
foydalaniladigan atomik hisoblagichlar uchun
|
|
![]()
|
|
|
|
|
|
|
(Har doim musbat bo’lgan) hisoblagichimizni ifodalash uchun atomik butun son tipidan foydalanamiz. |
|
|
WaitGroup barcha goroutinalar o’z ishlarini tugatishini kutishimizga yordam beradi. |
|
|
Biz 50 ta goroutina ishga tushiramiz, ularning har biri hisoblagichni aniq 1000 marta oshiradi. |
|
|
Hisoblagichni atomik tarzda oshirish uchun |
|
|
Barcha goroutinalar tugaguncha kutamiz. |
|
|
Bu yerda hech qaysi goroutina ‘ops’ga yozmayapti, lekin
|
|
|
Biz aniq 50,000 ta amal bo’lishini kutamiz. Agar atomik
bo’lmagan butun sondan foydalanib, uni |
|
|
Keyingi misolda holatni boshqarishning yana bir vositasi bo’lgan mutexlarni ko’rib chiqamiz. |
Keyingi misol: Mutexes.