🔥 ۴۰ درصد تخفیف ثبت‌نام دوره‌ها قبل از افزایش قیمت‌ها
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ خانم توتک باغچه‌بان
دیتاهایی که safe نیستند
جامعه گولنگ ایجاد شده در ۲۷ تیر ۱۴۰۳

بابت این جلسه، بسیار عالی بود. یکی از برگترین مشکلات من اینجا بررسی شد. بحث همزمانی و آپدیت دیتاهای رفرنس . 

ممنون می‌شم دیتاهایی که در این زمینه safe نیستند رو بیان کنید. تا اینجا فقط به map اشاره شد، در صورتیکه slice هم رفرنس هست. و مهمترین بحث، به جز گوروتین ها، بعنوان مثال، یک API داریم که در ثانیه چندین درخواست رو پاسخ می‌ده، اگر فرض بر این باشه ، دو درخواست همزمان ارسال بشه، این مشکل برای بروزرسانی این جور دیتاها، باز ایجاد می‌شه یا اینکه هر درخواست در یک بلاک جداگانه پردازش می‌شه و تاثیری روی دیتاهای هم ندارند؟! 

سلام،

لیستی از دیتاهایی که در Go واسه همزمانی safe نیستن این‌ها هستن:

Maps - Slices - 

Channels (در صورت استفاده نادرست) - Pointers به دیتاهای مشترک - Structs و انواع داده‌های سفارشی (در صورت دسترسی همزمان بدون استفاده از روش‌های ایمن) - Global Variables
و برای مدیریت همزمانی از روش‌های زیر استفاده میشود:

Mutexes (sync.Mutex) - RWMutexes (sync.RWMutex) - Channels - Atomic Operations (sync/atomic) - Sync.Map

دلنواز قانونی ۲۸ تیر ۱۴۰۳، ۱۲:۴۹