Nadzór konkurencji

Współbieżność to sposób wykonywania więcej niż jednej rzeczy w tym samym czasie. W aplikacji Współbieżność odnosi się do wielu zadań uruchomionych w tym samym czasie / współbieżnie.

Współbieżność może sprawić, że aplikacja będzie szybsza, czystsza i zapewni lepsze wrażenia użytkownikowi. Korzystanie z wielowątkowości wydaje się trudne dla wielu programistów, ale API jest podobneNSOperation i Dispatch Queues ułatwia korzystanie z współbieżności i wielowątkowości w aplikacji.

Grand Central Dispatch

GCD to najczęściej używany interfejs API do zarządzania współbieżnym kodem i wykonywania operacji asynchronicznie na poziomie systemu. GCD zapewnia i wykorzystuje kolejki zadań. Te kolejki to struktura danych wykorzystująca terminologię FIFO, tj. Zadanie na pierwszym miejscu w kolejce zostanie wykonane jako pierwsze, a zadanie na końcu kolejki zostanie wykonane na końcu.

Na przykład - załóżmy, że kolejka do rezerwacji biletów do kina, jeśli jesteś ostatnią osobą, bilet dostaniesz jako ostatni, a jeśli ktoś przyjdzie po tobie, dostanie bilet po tobie.

Kolejka wysyłkowa

Kolejka wysyłkowa to łatwy sposób na wykonywanie zadania asynchronicznie i współbieżnie w aplikacji. Istnieją dwa rodzaje kolejek -

  • Serial Queues - Przechowują zadania w sposób szeregowy i wykonują jedno zadanie na raz.

  • Concurrent Queues - Przechowują zadania w sposób szeregowy i wykonują jedno zadanie na raz.

Niektóre funkcje używane do tworzenia lub pobierania kolejek to -

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

Dodawanie zadań do kolejek

Istnieją dwa rodzaje funkcji, które pomagają w dodawaniu zadań do kolejek. Oni są -

Synchronous Functions -

  • dispatch_once - zgłosi zadanie dopiero po jego zakończeniu przez cały czas trwania wniosku.

  • dispatch_sync - prześle zadanie do kolejki i wróci dopiero po wykonaniu zadania.

Asynchronous Functions -

  • Dispatch_async - złoży zadanie i wróci.

  • Dispatch_after - wraca natychmiast, ale opóźnia się o określony czas.

  • Dispatch_async - wraca natychmiast, ale zadanie jest przesyłane wiele razy.

Przykładowy kod

Poniżej znajduje się przykładowy kod służący do dodawania zadań do kolejki.

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

Ogólny przykład korzystania z kolejki

Poniższy kod jest przykładem użycia kolejki.

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

To wszystko, co zrobimy z kontrolą współbieżności, ponieważ wystarczy informacji, dopóki nie zostaniesz pośrednim programistą iOS.

Kontynuuj ćwiczenie pojęć, których się nauczyłeś i spróbuj je zmodyfikować i zintegrować zgodnie ze swoimi wymaganiami.