1 / 12
文档名称:

并发编程之OperationQueue和GCD.doc

格式:doc   大小:65KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

并发编程之OperationQueue和GCD.doc

上传人:88jmni97 2019/3/13 文件大小:65 KB

下载得到文件列表

并发编程之OperationQueue和GCD.doc

相关文档

文档介绍

文档介绍:并发编程之GCD在《并发编程之OperationQueue》中讲了Cocoa并发编程中的OperationQueue,了解了OperationQueue是一个面向对象的并发编程接口,它支持并发数,线程优先级,任务优先级,任务依赖关系等多种配置,可以方便满足各种复杂的多任务处理场景。本篇将接着讲另一种并发编程机制–GCD(GrandCentralDispatch)。,GCD是管理任务执行的一项技术,它使得我们对多任务处理变得更加方便和有效。它支持同步或异步任务处理,串行或并行的处理队列(DispathQueue),非系统调用的信号量机制,定时任务处理,进程、文件或网络的监听任务等。这个庞大的任务处理技术大大减少了线程的管理工作,使基于任务的开发变得更加高效。 DispatchQueueDispatchQueue是一个任务执行队列,可以让你异步或同步地执行多个Block或函数。DispatchQueue是FIFO的,即先入队的任务总会先执行。目前有三种类型的DispathQueue:(Serialdispatchqueue)(Concurrentdispatchqueue)(Maindispatchqueue) 串行队列串行队列一次只能处理一个任务,可以由用户调用dispatch_queue_create创建:dispatch_queue_t queue; queue = dispatch_queue_create("", NULL); dispatch_queue_create第一个参数是串行队列标识,一般用反转域名的格式表示以防冲突;第二个参数是queue的类型,设为NULL时默认是DISPATCH_QUEUE_SERIAL,将创建串行队列,在必要情况下,你可以将其设置为DISPATCH_QUEUE_CONCURRENT来创建自定义并行队列。 并行队列并行队列可以同时处理多个任务,在不得以的情况下可以用dispatch_queue_create创建,但一般我们都要用系统预定义的并行队列,即全局队列(GlobalConcurrentDispatchQueues)。目前系统预定义了四个不同运行优先级的全局队列,我们可以通过dispatch_get_global_queue来获取它们。dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);  dispatch_get_global_queue第一个参数是队列的优先级,分别对应四个全局队列:DISPATCH_QUEUE_PRIORITY_HIGHDISPATCH_QUEUE_PRIORITY_DEFAULTDISPATCH_QUEUE_PRIORITY_LOWDISPATCH_QUEUE_PRIORITY_BACKGROUND dispatch_get_global_queue中第二个参数目前系统保留,请设置为0即可。 主队列主队列是一个特殊的队列,它是系统预定义的运行在主线程的一个DispatchQueue。可以通过dispatch_get_main_queue来获取唯一的主队列。主队列一般运行一些需要与主线程同步的一些短时任务。dispatch_queue_t mainQueue = dispatch_get_main_queue();  获取当前队列你可以通过dispatch_get_current_queue获取运行时的队列:dispatch_queue_t currentQueue = dispatch_get_current_queue(); 如果在队列执行任务中调用,返回执行此任务的队列;如果在主线程中调用,将返回主队列;如果在一般线程(非主线程线程非队列执行任务)中调用,返回DISPATCH_QUEUE_PRIORITY_DEFAULT全局队列。 在队列中运行任务你可以随时向一个队列中添加一个新任务,只需要调用一下dispatch_async即可:dispatch_async(aQueue, ^{     //Do some work; });  dispatch_async中的任务是异步执行的,就是说dispatch_async添加任务到执行队列后会立刻返回,而不会等待任务执行完成。然而,必要的话,你也可以调用dispatch_sync来同步的执行一个任务:dispatch_sync(aQueue, ^{     //Do some work; }); dispatch_sync会阻塞当前线程直到提交的任务完全执行完毕。 DispatchQueue的

最近更新

建设智慧医院提升服务品质 27页

我和孩子共成长作文 2页

简单统计表市公开课获奖教案省名师优质课赛课.. 5页

穿雨衣的人美术市公开课获奖教案省名师优质课.. 5页

积木图形配对市公开课获奖教案省名师优质课赛.. 4页

康复治疗技能强化专业介绍 33页

科学市公开课获奖教案省名师优质课赛课一等奖.. 4页

应用呼吸机进行机械通气的呼吸节律调节 28页

青年黑卡项目商业计划书 6页

应对野外拍摄时的紧急情况处理方法 27页

零陵古城商业计划书 8页

白鹅原文市公开课获奖教案省名师优质课赛课一.. 5页

陶瓷盒子商业计划书 7页

陈腐垃圾处理项目商业计划书 9页

电风扇幼儿市公开课获奖教案省名师优质课赛课.. 4页

电子板报市公开课获奖教案省名师优质课赛课一.. 5页

理发儿歌市公开课获奖教案省名师优质课赛课一.. 5页

银饰品大学生商业计划书 5页

狐狸偷鸡的市公开课获奖教案省名师优质课赛课.. 4页

钛米机器人商业计划书 7页

焊缝连接市公开课获奖教案省名师优质课赛课一.. 4页

灯泡彩旗市公开课获奖教案省名师优质课赛课一.. 6页

华东理工大学后勤服务中心党总支2024年工作总.. 3页

主流运维方案 5页

布托啡诺在颌面部疼痛中的应用研究 28页

江西版二年级美术市公开课获奖教案省名师优质.. 4页

布托啡诺在儿童虎口腔炎疼痛治疗中的应用评价.. 23页

棒棒糖制作市公开课获奖教案省名师优质课赛课.. 4页

一级建造师之一建公路工程实务题库 及答案【考.. 304页

【部编版】小学语文一至六年级语文必背内容整.. 16页