İçeriğe geç

DispatchGroup vs DispatchSemaphore kullanımı

Merhabalar bu yazımda Multi Thread işlemlerinde karşılaştığımız DispatchGroup ve DispatchSemaphore yapılarının kullanımını göreceğiz.

Duruma göre işlem bekletme ve ardı ardına beklemeli bir şekilde gerçekleştirilecek işlemler için kullanmamız gereken yapılardır. Semaphore yapısı ve Group yapısı bir birlerine oldukça benzer yapılardır.

Aşağıda yazdığım örnekleri inceleyelim.

Bu işlemleri göstermek için basit bir servis istek fonksiyonu yazdım.

İlk olarak DispatchGroup kullanımını görelim.

Kullanımı oldukça basit. DispatchGroup sınıfına bağlı değişken ile yürütülecek işlem öncesi .enter() fonksiyonu ile Proses başlatıp işlem bitiminde diğer Prosese geçmesi için .leave() fonksiyonu ile tamamlıyoruz. Tüm yürütülen prosesler sonlandığı zaman .notify() block içerisinde kullanıcıya bilgilendirme işlemi yapabilirsiniz.

Semaphore yapısı ile aynı işlemleri gerçekleştirelim.

Yapıların benzediğini söylemiştim. işlem bittiği zaman .signal() ile işlemi tetikleyip .wait() fonksiyonu aşağısında olan kısmı çalıştırabilirsiniz. DispatchSemaphore içerisinde bulunan value değeri 0 olduğu zaman tüm işlemleri teker teker yürütür. Ancak değeri yükselttiğiniz zaman yapılacak işlemi block dışında tutar. Bu konuda Group yapısından ayrışmaktadır.

Aşağıda verdiğimiz değerlere göre yürütülen işlem yapısını görebilirsiniz.

Value değeri 0 olduğu zaman;

Value değeri 2 olduğu zaman;

 

 

 

Tarih:İOS

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

© 2019 Kenan Atmaca