|
سازوکار اصلی مدیریت وضعیت (state) در Go، ارتباط از
طریق کانالهاست. نمونهاش را در
استخر کارگرها دیدیم. اما گزینههای دیگری
هم برای مدیریت وضعیت وجود دارد. اینجا استفاده از بستهٔ
|
|
![]()
|
|
|
|
|
|
|
از یک نوع عدد صحیح اتمیک برای نمایش شمارندهٔ (همیشه مثبتِ) خودمان استفاده میکنیم. |
|
|
یک WaitGroup کمک میکند منتظر بمانیم تا همهٔ گوروتینها کارشان را تمام کنند. |
|
|
۵۰ گوروتین راه میاندازیم که هر کدام شمارنده را دقیقاً ۱۰۰۰ بار افزایش میدهند. |
|
|
برای افزایش اتمیک شمارنده از |
|
|
صبر میکنیم تا همهٔ گوروتینها تمام شوند. |
|
|
اینجا هیچ گوروتینی در ‘ops’ نمینویسد، اما با |
|
|
انتظار داریم دقیقاً ۵۰٬۰۰۰ عملیات داشته باشیم. اگر از
یک عدد صحیح غیراتمیک استفاده میکردیم و آن را با
|
|
|
در ادامه میوتکسها را میبینیم؛ ابزار دیگری برای مدیریت وضعیت. |
مثال بعدی: میوتکسها.