Учебники

Параллельное управление

Параллелизм – это способ выполнения более чем одной вещи одновременно. В приложении параллелизм относится к нескольким задачам, выполняемым одновременно / одновременно.

Параллелизм может сделать ваше приложение более быстрым, чистым и улучшить работу пользователей. Многопоточность кажется многим разработчикам трудной, но такие API, как NSOperation и Dispatch Queues, упрощают использование параллелизма и многопоточности в приложении.

Grand Central Dispatch

GCD – это наиболее часто используемый API для управления параллельным кодом и асинхронного выполнения операций на системном уровне. GCD предоставляет и использует очереди задач. Эти очереди представляют собой структуру данных, использующую терминологию FIFO, то есть задача, находящаяся на первом месте в очереди, будет выполнена первой, а задача в последней очереди будет выполнена, наконец.

Например: предположим, что линия бронирования билетов в кино, если вы последний человек, вы получите билет последним, а если кто-то придет за вами, он получит билет после вас.

Очередь отправки

Очередь отправки – это простой способ асинхронного и одновременного выполнения задачи в вашем приложении. Есть два типа очередей –

  • Последовательные очереди – они хранят задачи последовательно и выполняют одну задачу за раз.

  • Параллельные очереди – они хранят задачи последовательно и выполняют одну задачу за раз.

Последовательные очереди – они хранят задачи последовательно и выполняют одну задачу за раз.

Параллельные очереди – они хранят задачи последовательно и выполняют одну задачу за раз.

Некоторые из функций, которые используются для создания или получения очередей:

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 

Добавление задач в очереди

Существует два типа функций, которые помогают добавлять задачи в очереди. Они –

Синхронные функции

  • dispatch_once – отправит задание только после того, как оно закончится.

  • dispatch_sync – отправит задачу в очередь и вернется только после ее завершения.

dispatch_once – отправит задание только после того, как оно закончится.

dispatch_sync – отправит задачу в очередь и вернется только после ее завершения.

Асинхронные функции

  • Dispatch_async – отправит задачу и вернется.

  • Dispatch_after – возвращается немедленно, но задерживается на определенное время.

  • Dispatch_async – немедленно возвращается, но задание отправляется несколько раз.

Dispatch_async – отправит задачу и вернется.

Dispatch_after – возвращается немедленно, но задерживается на определенное время.

Dispatch_async – немедленно возвращается, но задание отправляется несколько раз.

Пример кода

Ниже приведен пример кода для добавления задач в очередь.

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

Общий пример использования очереди

Следующий код является примером использования очереди.

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

Это все, что мы будем делать с контролем параллелизма, так как информации достаточно, пока вы не станете промежуточным iOS-разработчиком.

Продолжайте практиковать концепции, которые вы изучили, и пытайтесь модифицировать и интегрировать их в соответствии с вашими требованиями.