Eşzamanlılık kontrolü

Eşzamanlılık, aynı anda birden fazla şeyi yürütmenin bir yoludur. Bir uygulamada Eş Zamanlılık, aynı anda / eşzamanlı olarak çalışan birden çok görevi ifade eder.

Eşzamanlılık, uygulamanızı daha hızlı, daha temiz hale getirebilir ve kullanıcıya daha iyi bir deneyim sunar. Çoklu iş parçacığının kullanılması birçok geliştirici için zor gibi görünse de API'lerNSOperation ve Dispatch Queues uygulamada eşzamanlılık ve çoklu iş parçacığı kullanımını kolaylaştırır.

Grand Central Dispatch

GCD, eşzamanlı kodu yönetmek ve işlemleri sistem düzeyinde eşzamansız olarak yürütmek için en yaygın kullanılan API'dir. GCD, görev sıraları sağlar ve kullanır. Bu Kuyruklar, FIFO terminolojisini kullanan veri yapılarıdır, yani bir kuyrukta ilk sırada yer alan görev ilk olarak yürütülür ve bir kuyruğun sonundaki görev en sonunda yürütülür.

Örneğin - Bir film bileti rezervasyon satırını varsayalım, son kişi sizseniz, en son bilet alacaksınız ve biri peşinizden gelirse, sizden sonra bir bilet alacak.

Sevk Sırası

Gönderim kuyruğu, bir görevi uygulamanızda eşzamansız ve eşzamanlı olarak gerçekleştirmenin kolay bir yoludur. İki tür kuyruk vardır -

  • Serial Queues - Görevleri seri bir şekilde depolarlar ve her seferinde bir görevi yerine getirirler.

  • Concurrent Queues - Görevleri seri bir şekilde depolarlar ve her seferinde bir görevi yerine getirirler.

Kuyruk oluşturmak veya almak için kullanılan işlevlerden bazıları şunlardır:

dispatch_queue_create       
// create a serial or concurrent queue 
dispatch_queue_get_label     
// get the label of a given queue 
dispatch_get_main_queue   
// get the one and only main queue 
dispatch_get_global_queue    
// get one of the global concurrent queues

Kuyruklara Görev Ekleme

Kuyruklara görev eklemeye yardımcı olan iki tür işlev vardır. Onlar -

Synchronous Functions -

  • dispatch_once - görevi yalnızca uygulama ömrü sona erdikten sonra gönderecektir.

  • dispatch_sync - kuyruğa bir görev gönderir ve yalnızca görev tamamlandığında geri döner.

Asynchronous Functions -

  • Dispatch_async - bir görev gönderecek ve geri dönecek.

  • Dispatch_after - hemen döner ancak belirli bir süre gecikir.

  • Dispatch_async - hemen döner ancak görev birden çok kez gönderilir.

Örnek Kod

Sıraya görev eklemek için örnek kod aşağıda verilmiştir.

dispatch_async(dispatch_get_main_queue(), update_block);  
// add update_block to main queue  

dispatch_apply(i, some_queue, work_block)  
// add work_block to some_queue i times  

dispatch_sync(background_queue, blocking_block)  
// add blocking block to background queue and wait for completion

Kuyruk kullanımına Genel Örnek

Aşağıdaki kod, kuyruk kullanımına bir örnektir.

dispatch_async(background_queue, ^ { 
   // Perform code that takes long time, here. 
   Dispatch_async(dispatch_get_main_queue(), ^ { 
      //Some other task, generally UI. 
   }); 
});

Eşzamanlılık kontrolü ile yapacağımız tek şey bu, çünkü orta düzey bir iOS Geliştiricisi olana kadar yeterli bilgi.

Öğrendiğiniz kavramları uygulamaya devam edin ve bunları ihtiyacınıza göre değiştirmeye ve entegre etmeye çalışın.