بهترین روش برای حل مشکل Race condition

تمامی مشکلات مربوط به race condition و همزمانی تغییر یک متغیر توسط thread ها و پروسه های موازی و شرایط deadlock از این واقعیت سرچشمه میگیره که چند فرایند به اشتباه یک متغیر رو با هم تغییر بدن. و اگر یک متغیر داشته باشیم که دیگه تغییر نکنه تمامی این مشکلات از ریشه حل میشه. یعنی اگر متغیرهای ما همگی immutable یا غیر قابل تغییر باشن دیگه این مشکلات رو نمیبینیم.

تنها در زبانهای functional مثل clojure این امکان وجود داره که تمامی متغیرها immutable باشن.

در زبانهای دیگه که functional نیستن باید این مشکل رو جوری دیگه حل کرد. یکی از روش هایی که این مشکل رو حل میکنن اینه که یک بخشی از برنامه که قراره همزمانی توش داشته باشیم رو با متغیرهای immutable مینویسیم و بقیه بخش های برنامه رو mutable.

و از بخش mutable میتونیم از transactional memory استفاده کنیم که از این متغیرها نگهداری بشه.

پس بهترین معماری اینه که برنامه به دو بخش تقسیم بشه. یک بخش که متغیرها رو توشون تغییر میدیم و یک بخش که متغیرها تغییر نمیکنن و immutable هستن. حالا از سیاست هایی از اون بخشی که متغیرها رو عوض میکنه محافظت میکنیم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *