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/282
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/282

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

What is Telegram?

Telegram is a cloud-based instant messaging service that has been making rounds as a popular option for those who wish to keep their messages secure. Telegram boasts a collection of different features, but it’s best known for its ability to secure messages and media by encrypting them during transit; this prevents third-parties from snooping on messages easily. Let’s take a look at what Telegram can do and why you might want to use it.

That strategy is the acquisition of a value-priced company by a growth company. Using the growth company's higher-priced stock for the acquisition can produce outsized revenue and earnings growth. Even better is the use of cash, particularly in a growth period when financial aggressiveness is accepted and even positively viewed.he key public rationale behind this strategy is synergy - the 1+1=3 view. In many cases, synergy does occur and is valuable. However, in other cases, particularly as the strategy gains popularity, it doesn't. Joining two different organizations, workforces and cultures is a challenge. Simply putting two separate organizations together necessarily creates disruptions and conflicts that can undermine both operations.

telegram from br


Telegram Microfrontend.ir
FROM USA