Rust Fearless Concurrency

Veli Uysal
Turkiye Rust Community
2 min readMay 16, 2023

--

Rust dilinde “fearless concurrency” (korkusuz eşzamanlılık) kavramı, Rust dilinin eşzamanlı programlama özelliklerinin kullanımı sırasında bellek güvenliği ve iş parçacığı güvenliği konularında geliştiricilere güvenli bir programlama ortamı sağlaması anlamına gelir. Şimdi de daha detaylı olarak inceleyelim.

Rust, çoklu iş parçacığı desteği sunar ve bu özellik modern yazılım uygulamalarının çoğunda önemli bir gereksinimdir. Rust dilinde bu çoklu iş parçacıkları özellikler bakımından yarış koşulu (race condition) ve diğer paralel programlama hatalarıyla başa çıkmak için kendince bir yaklaşım sergiler. Rust dilindeki “fearless concurrency” kavramı “sahiplik” (ownership) ve “ölçülen ödünç alma” (borrowing) konularının üzerine inşa edilmiştir. Bu özellikler sayesinde eşzamanlı programlama hatalarını önlemek için birçok güvenlik mekanizması sağlar.

Örneğin, Rust, aynı veriye aynı anda birden fazla iş parçacığından erişilmesini önlemek için, “Mutex” ve “RwLock” gibi iş parçacığı güvenliği için Smart Pointer’lar sağlar. Rust ayrıca “std::sync::mpsc” (multiple producer, single consumer) adlı bir mekanizma sağlayarak, birden fazla iş parçacığı arasında veri aktarımı yapmayı kolaylaştırır. Şimdi de bu bahsettiğim “Mutex” ve “RwLock” kavramlarına bakalım.

  • Mutex: Programlama dillerinde, özellikle çoklu iş parçacıklı (multithreaded) programlarda, bir kaynağa (örneğin bir dosya veya bellek alanı) aynı anda yalnızca bir iş parçacığı tarafından erişilmesini sağlamak için kullanılan bir senkronizasyon mekanizmasıdır. Mutex, bir iş parçacığı kaynağı kullanıyorken, diğer iş parçacıklarının beklemesini ve kaynağı kullanmadan önce diğer iş parçacığının kaynağı bırakmasını beklemesini sağlar. Bu, kaynakların eş zamanlı olarak değiştirilmesini önleyerek, programın verimli ve güvenli bir şekilde çalışmasını sağlar.
  • RwLock: Bu kelimenin “Read-Write Lock” teriminin kısaltmasıdır ve Türkçe’de “Okuma-Yazma Kilidi” anlamına gelir. Programlama dillerinde, özellikle çoklu iş parçacıklı (multithreaded) programlarda, kaynağa okuma veya yazma işlemi yaparken, aynı anda yalnızca bir yazma işlemine izin veren ancak birçok okuma işlemine izin veren bir senkronizasyon mekanizmasıdır. Rwlock, bir iş parçacığı kaynağı okurken, diğer iş parçacıklarının da aynı anda kaynağı okumasına izin verir, ancak bir iş parçacığı kaynağı yazarken, diğer iş parçacıklarının beklemesini ve kaynağı kullanmadan önce diğer iş parçacığının kaynağı bırakmasını bekler. Bu, okuma işlemlerinin eş zamanlı olarak gerçekleştirilmesine izin vererek, programın verimli bir şekilde çalışmasını sağlar. Ancak yazma işlemlerinde, verinin tutarlılığını korumak için sadece tek bir iş parçacığının kaynağa erişmesine izin verilir.

Sosyal medya hesaplarım: Twitter | Linkedin | Github | Youtube

--

--