From 2169488d192aed074bb94aa6775b2aae0aba649b Mon Sep 17 00:00:00 2001 From: seyfi Date: Fri, 22 Sep 2023 22:18:40 +0330 Subject: [PATCH] Update 3-3-sync Improve mutex description --- content/chapter 3/3.3-sync.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/content/chapter 3/3.3-sync.md b/content/chapter 3/3.3-sync.md index cf36724e4..70937423c 100644 --- a/content/chapter 3/3.3-sync.md +++ b/content/chapter 3/3.3-sync.md @@ -4,12 +4,12 @@ slug: go-sync-package weight: 5003 --- -پکیج `sync` یکی از کاربردی ترین پکیج ها در زمینه همزمانی می باشد و یکسری تایپ و توابع برای {{< tooltip text="همگام سازی" note="synchronize" >}} و کنترل دسترسی همزمان به داده مشترک ارائه می دهد. که پرکاربردترین آن ها شامل موارد زیر است: +پکیج `sync` یکی از کاربردی ترین پکیج ها در زمینه همزمانی می باشد و یکسری تایپ و توابع برای{{< tooltip text="همگام سازی" note="synchronize" >}} و کنترل دسترسی همزمان به داده های مشترک ارائه می دهد. پرکاربرد ترین ویژگی های این پکیج شامل موارد زیر می شود : -- `Mutex`: با استفاده از این می توانید آن بخش از داده ای که گوروتین ها بطور همزمان قصد دارند دسترسی داشته باشند را قفل کنید. -- `RWMutex`: با استفاده از این می توانید به چند گوروتین در یک زمان اجازه خواندن دهید ولی فقط یک گوروتین می تواند بنویسد. -- `WaitGroup`: یک هماهنگ کننده گوروتین می باشد برای اینکه ترتیب عملیات ها در هنگام همزمانی رعایت شود. -- `Once`: اجازه می دهد یک تابع حداکثر یک بار اجرا شود. +- `Mutex` : با استفاده از این تایپ می توانید آن بخش از داده ای که گوروتین ها بطور همزمان قصد دارند دسترسی داشته باشند را می توانید قفل کنید. +- `RWMutex` : با استفاده از این تایپ می توانید به چندین گوروتین اجازه خواندن دهید اما فقط یک گوروتین قابلیت نوشتن در یک زمان مشخص را دارد. +- `WaitGroup`: یک هماهنگ کننده گوروتین می باشد، برای اینکه ترتیب عملیات ها در هنگام همزمانی رعایت شود. +- `Once`: این تایپ اجازه می دهد یک تابع حداکثر یک بار اجرا شود. - `Pool`: مجموعه‌ای از آبجکت های موقت که امکان ذخیره و دریافت دارند بدون اینکه بخشی از حافظه را اشتغال کنند. - `Cond`:با استفاده از Cond می توانید چندین گوروتین ایجاد کنید و اجرای فرآیند آن ها را منتظر وقوع یک رویداد قرار دهید. @@ -20,7 +20,8 @@ weight: 5003 ## 3.3.1 Mutex -در پکیج `sync` یک تایپ به نام `Mutex` وجود دارد که به شما این امکان را می دهد دسترسی به داده مشترک را {{< tooltip text="همگام سازی" note="synchronize" >}} کنید. زمانیکه از تایپ Mutex استفاده می کند ۲ حالت دارد؛ Lock یا Unlock. وقتی شما Lock می کنید فقط و فقط یک گوروتین می تواند برروی آن بخش از داده کار کند و تا زمانیکه شما Unlock نکنید سایر گوروتین ها نمی توانند دسترسی داشته باشند و باید منتظر بمانند. +در پکیج `sync` یک تایپ به نام `Mutex` وجود دارد که به شما این امکان را می دهد دسترسی به داده های مشترک را {{< tooltip text="همگام سازی" note="synchronize" >}} کنید. با استفاده از این قابلیت در واقع منابع مشترک را محافظت شده و این اطمینان به شما داده می شود که تنها یک گوروتین در یک زمان مشخص، به دیتای مشترک بین گوروتین ها دسترسی دارد. + تایپ Mutex شامل دو متد مهم Lock یا Unlock است. وقتی Lock فراخوانی می شود فقط و فقط یک گوروتین می تواند برروی آن بخش از داده کار کند و تا زمانیکه شما Unlock نکنید سایر گوروتین ها نمی توانند به دیتای مورد نظر شما دسترسی داشته باشند و تا زمانیکه Unlock صورت گیرد سایر گوروتین هادر حالت انتظار باقی می مانند. به مثال زیر توجه کنید :