Telegram Group & Telegram Channel
Microfrontend.ir
زبان Rust تضمین Race-Free بودن می‌ده، زبان Go این تضمین رو نمی‌ده ولی به فرهنگ و کالچر برنامه‌نویساش دلخوشه و به نظرم دلخوشی بجاییه و البته اگر High Availability در معماری فاکتور بحرانیه طبعا زبان یا ران تایمی مثل Erlang اولویت بالاتری داره. 〰️〰️〰️〰️〰️〰️
Race Condition
فرض کنید برنامه‌‌ای می‌نویسید که چندین ترد یا پروسس به طور همزمان در حال اجرا هستند. این ترد ها ممکن است به داده های مشترکی دسترسی داشته باشند و آنها را بروزرسانی کنند. حال اگر این دسترسی و به روزرسانی بدون کنترل و نظم انجام شود، به طوری که ترتیب دقیق دسترسی و به روزرسانی داده ها توسط ترد ها مشخص نباشد، شرایط مسابقه (Race Condition) رخ می دهد.
در این مثال، متغیر counter به عنوان یک شمارنده استفاده می شود. 10 تابع به طور همزمان مقدار counter را با استفاده از تابع increment افزایش می دهند.
در Rust با وجود اینکه ما با چندین ترد به شمارنده دسترسی داریم، سیستم مالکیت Rust تضمین می‌کند که فقط یک ترد می‌تواند همزمان شمارنده را به‌صورت تغییرپذیر یا میوتیبل در اختیار بگیرد و با قطعیت می‌توان گفت که عدد ۱۰ چاپ خواهد شد.
در Go با استفاده از یک اشاره گر مستقیماً به متغیر شمارنده دسترسی داریم. این یک Race Condition بالقوه ایجاد می کند زیرا چندین گوروتین می توانند همزمان آن را تغییر دهند. مقدار نهایی شمارنده بسته به اینکه کدام گوروتین در مسابقه برای دسترسی به آن "برنده" شود، می تواند غیرقابل پیش بینی باشد.



tg-me.com/microfrontend_ir/283
Create:
Last Update:

Race Condition
فرض کنید برنامه‌‌ای می‌نویسید که چندین ترد یا پروسس به طور همزمان در حال اجرا هستند. این ترد ها ممکن است به داده های مشترکی دسترسی داشته باشند و آنها را بروزرسانی کنند. حال اگر این دسترسی و به روزرسانی بدون کنترل و نظم انجام شود، به طوری که ترتیب دقیق دسترسی و به روزرسانی داده ها توسط ترد ها مشخص نباشد، شرایط مسابقه (Race Condition) رخ می دهد.
در این مثال، متغیر counter به عنوان یک شمارنده استفاده می شود. 10 تابع به طور همزمان مقدار counter را با استفاده از تابع increment افزایش می دهند.
در Rust با وجود اینکه ما با چندین ترد به شمارنده دسترسی داریم، سیستم مالکیت Rust تضمین می‌کند که فقط یک ترد می‌تواند همزمان شمارنده را به‌صورت تغییرپذیر یا میوتیبل در اختیار بگیرد و با قطعیت می‌توان گفت که عدد ۱۰ چاپ خواهد شد.
در Go با استفاده از یک اشاره گر مستقیماً به متغیر شمارنده دسترسی داریم. این یک Race Condition بالقوه ایجاد می کند زیرا چندین گوروتین می توانند همزمان آن را تغییر دهند. مقدار نهایی شمارنده بسته به اینکه کدام گوروتین در مسابقه برای دسترسی به آن "برنده" شود، می تواند غیرقابل پیش بینی باشد.

BY Microfrontend.ir





Share with your friend now:
tg-me.com/microfrontend_ir/283

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

NEWS: Telegram supports Facetime video calls NOW!

Secure video calling is in high demand. As an alternative to Zoom, many people are using end-to-end encrypted apps such as WhatsApp, FaceTime or Signal to speak to friends and family face-to-face since coronavirus lockdowns started to take place across the world. There’s another option—secure communications app Telegram just added video calling to its feature set, available on both iOS and Android. The new feature is also super secure—like Signal and WhatsApp and unlike Zoom (yet), video calls will be end-to-end encrypted.

The seemingly negative pandemic effects and resource/product shortages are encouraging and allowing organizations to innovate and change.The news of cash-rich organizations getting ready for the post-Covid growth economy is a sign of more than capital spending plans. Cash provides a cushion for risk-taking and a tool for growth.

telegram from id


Telegram Microfrontend.ir
FROM USA