Buradasın
Rust ve Go Programlama Dillerinde Multitrading ve Senkronizasyon Eğitimi
youtube.com/watch?v=UKZMIhxMoT8Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan programlama dili eğitim içeriğidir. İlk bölümde Rust programlama dilinde, ikinci bölümde ise Go programlama dilinde multitrading ve senkronizasyon konuları ele alınmaktadır.
- Video, Rust'ta multitrading'in C++'dan farklarını açıklayarak başlıyor ve Rust'ta senkronizasyon için kullanılan yöntemleri (atomik değişkenler, mutex, channel) detaylı şekilde anlatıyor. Daha sonra Go'da mutex ve atomic değişkenlerin kullanımı, güvenli bölge oluşturma, değer erişimi ve mutex ile değer arttırma/azaltma işlemlerini örneklerle açıklıyor. Son bölümde ise channel kullanımı ve MPSC (çoklu üretici, tekli tüketici) kanalların nasıl oluşturulup kullanılacağı gösteriliyor.
- Eğitim, asenkron fonksiyonların daha temiz ve kolay çalıştığını belirterek, bir sonraki videoda asenkron fonksiyonların nasıl kullanılacağını anlatacağını söyleyerek sonlanmaktadır.
- 00:03Rust'ta Multithreading Temelleri
- Rust'ta multithreading, C++'a ek olarak değişkenlerin fonksiyonların içine borowing metoduyla sahiplik aktarılarak işlenmesi özelliğine sahiptir.
- Rust'ta senkronizasyon sağlamak için atomik değişkenler, mutex ve channel gibi araçlar kullanılır.
- Channel, çok üretici tek tüketici (multi-producer single-consumer) modeli sunar; yani birden fazla kişi aynı anda kanala yazabilirken sadece bir kişi okuyabilir.
- 01:36Thread Oluşturma ve Kullanımı
- Rust'ta thread oluşturmak için "std::thread" kütüphanesi kullanılır.
- "join" fonksiyonu, thread'in bitmesini beklemek için kullanılır ve thread içindeki fonksiyon bitmeden bloklanır.
- Thread içinde kullanılan değişkenlerin sahipliğini aktarmak için "move" keyword'u kullanılır.
- 05:19Atomik Değişkenler ve Senkronizasyon
- Rust'ta atomik değişkenler için "std::sync" paketindeki "Atomic" sınıfı kullanılır.
- Atomik değişkenleri birden fazla thread üzerinde kullanmak için "Arc" (Atomic Reference Counter) kullanılır, bu C++'daki shared pointer'a benzer.
- Atomik değişkenlerde "acquire" ve "release" operasyonları, C++'daki memory order'larla aynı şekilde çalışır ve threadler arası senkronizasyon sağlar.
- 16:25Mutex Kullanımı
- Buteks içinde değer tutuluyor ve krediler ekleniyor.
- Mutex kullanıldığında, içindeki değer güvenli bir bölgede korunuyor ve diğer trendler bu değere erişemiyor.
- Mutex ile kilitleme yapıldığında, diğer trendlerin girmesini engelleyerek değer karışıklığı yaşanmıyor.
- 18:47Channel Kullanımı
- Channel'lar çoklu üretici (MPSC) ve tekli tüketici (single consumer) olarak kullanılıyor.
- Channel'lar ile bir sender ve bir receiver arasında veri aktarımı yapılıyor.
- Receiver fonksiyonu bloklayan bir fonksiyon olarak çalışıyor ve bir cevap gelene kadar diğer verileri beklemiyor.
- 23:00Asenkron Fonksiyonlar
- Asenkron fonksiyonlar senkron fonksiyonlara göre daha temiz ve kolay bir şekilde çalışıyor.
- Senkron fonksiyonlar içinde bir select yaparak diğer fonksiyonların hazır olup olmadığını kontrol ediyor.
- Asenkron fonksiyonlar, birden fazla bloklayan fonksiyon için ayrı ayrı işlem yapmak yerine daha etkili bir çözüm sunuyor.