并发控制

并发是一种同时执行多个操作的方法.在应用程序中,并发是指同时/同时运行的多个任务.

并发可以使您的应用程序更快,更清洁并为用户提供更好的体验.对于许多开发人员来说,多线程的使用似乎很难,但API就像 NSOperation Dispatch Queues 一样,可以很容易地在应用程序中使用并发和多线程.

Grand Central Dispatch

GCD是最常用的API,用于在系统级别异步管理并发代码和执行操作. GCD提供并使用任务队列.这些队列是使用FIFO术语的数据结构,即队列中第一个位置的任务将首先执行,最后一个队列中的任务将被执行.

For例子 : 假设一张电影票预订专线,如果你是最后一个人,你将获得最后一张票,如果有人来找你,他会在你之后得到一张票.

调度队列

调度队列是在应用程序中异步和并发执行任务的简便方法.有两种类型的队列和减号;

串行队列 : 他们以一系列方式存储任务并一次执行一项任务.

并发队列 : 它们以一系列方式存储任务并一次执行一项任务.

用于创建或获取队列的一些函数是 :

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_async : 将提交任务并返回.

  • Dispatch_after : 立即返回但延迟特定时间.

  • Dispatch_async : 立即返回,但任务已多次提交.

示例代码

以下是示例用于向队列添加任务的代码.

 
 dispatch_async(dispatch_get_main_queue(),update_block); 
//将update_block添加到主队列
 dispatch_apply(i,some_queue,work_block)
//将work_block添加到some_queue i次
 dispatch_sync(background_queue ,blocking_block)
//将阻塞块添加到后台队列并等待完成

使用队列的一般示例

以下代码是使用队列的示例.

dispatch_async(background_queue,^ {
//执行代码这需要很长时间,这里.
 Dispatch_async(dispatch_get_main_queue(),^ {
//其他一些任务,通常是UI.
}); 
});

这就是我们对并发控制所做的全部工作,因为在您成为中级iOS开发人员之前,这是足够的信息.

继续练习您学到的概念,并尝试根据您的要求修改和整合它们.