threading

C# ile SemaphoreSlim Kullanımı

Uzun ama çok uzun bir aradan sonra tekrardan yazı girmenin heyecanı ile bu satırlara başlıyorum 🙂 En son ki yazımın neredeyse senesi geliyordu, bu arada askerlik, sivil hayata adaptasyon, yeni iş derken bu zamana kadar sarktı. Umarım bir daha bu kadar ara vermem (her blog sahibinin tek temennisi ve sadece %10’u bu temenniyi gerçeğe dönüştürüyor 🙂 )

Konu başlığımı seçerken gerçek hayatta yeni öğrendiğim şeylerin payı büyüktür. Bende geçtiğimiz ay yeni öğrendiğim ve bir uygulamada kullanma fırsatı bulduğum SemaphoreSlim sınıfından bahsedeceğim.

Devamını Oku

Multithread Uygulamalarda Değişken Kullanımı

Yaklaşık 3 aydır “Sobee Studios” firmasında çalışıyorum ve açık söylemek gerekirse bu kadar kısa sürede bir çok şey öğrendim. Teşekkürü sonda yapılmasını pek doğru bulmadığım için başında yapayım, bu 3 aylık süreçte deneyimlerini benimle paylaşan Cem Sermen ve Fatih Güngör‘e çok teşekkür ediyorum. Ayrıca uzun zamandır yazmadığım için de baya bir konu birikti, en kısa sürede bunları burada paylaşacağımı söyleyip konuya gireyim.

Bir çok uygulamada özellikle Client-Server uygulamalarında ram’de geçici olarak veri tutmanız gerekebilir. Bu verileri bir değişkende (int, bool, long vs.) tutabileceğiniz gibi birden fazla olması durumunda dizilerde de tutabilirsiniz. SingleThread bir uygulama da diziye veri eklemek ve çıkartmak sizin için problem olmayacaktır çünkü o diziye sadece tek bir thread’den tek bir uygulama erişecektir. Sorun multithread uygulamalar da ortaya çıkıyor. 

Resim üzerinden gidecek olursak, Thread-1 diziye bir veri elemanı eklemek için erişiyor olsun. Aynı şekilde Thread-2’de diziden veri okumak için erişiyor olduğunu düşünelim. Önce hangi işlem yapılacak? Okuma işlemi mi? Yoksa yazma işlemi mi? Yada Thread-1 veri’deki bir elemanı değiştiriyor olsun, Thread-2’nin okumaya çalıştığı veri elemanının güncel olmasını garanti edebilir miyiz?

Devamını Oku

 Scroll to top