dispatch_async(dispatch_get_main_queue()) {print("Handle image and display in\(NSThread.currentThread())") } } } } 我们来看看上面代码都做了些什么,首先在dispatchTaskInMainThread方法中,我们使用dispatch_get_global_queue函数获取到全局并发队列,然后将downloadImage下载图片的方法作为任务添加到该全局队列...
1、使用dispatch_queue_create函数创建串行队列 dispatch_queue_create(const char *label, dispatch_queue_attr_t attr) label: 表示队列的标识 attr:表示队列的属性,根据这个参数创建并行队列还是串行队列(并行使用 DISPATCH_QUEUE_CONCURRENT参数) 2、使用dispatch_get_global_queue函数获得全局的并发(GCD提供) dispatch...
dispatch_get_global_queue会获取一个全局队列,我们姑且理解为系统为我们开启的一些全局线程。我们用priority指定队列的优先级,而flag作为保留字段备用(一般为0)。 dispatch_get_main_queue会返回主队列,也就是UI队列。它一般用于在其它队列中异步完成了一些工作后,需要在UI队列中更新界面(比如上面代码中的[self updateU...
dispatch_queue_t defultQueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);dispatch_group_t requestGroup=dispatch_group_create();dispatch_group_async(requestGroup,defultQueue,^{sleep(2);NSLog(@"+++++1111");});dispatch_group_async(requestGroup,defultQueue,^{NSLog(@"+++++2222")...
dispatch_async 函数会将传入的block块放入指定的queue里运行。这个函数是异步的,这就意味着它会立即返回而不管block是否运行结束。因此,我们可以在block里运行各种耗时的操作(如网络请求) 而同时不会阻塞UI线程。 dispatch_get_global_queue 会获取一个全局队列,我们姑且理解为系统为我们开启的一些全局线程。我们用prio...
The main queue (主线程串行队列):与主线程功能相同,提交到main queue的任务会在主线程中执行 dispatch_get_main_queue() 来获取 Global queue (全局并发队列):全局并发队列由整个进程共享,有高,中(默认),低,后台四个优先级别 dispatch_get_global_queue() 可以设置优先级 ...
我们来看看上面代码都做了些什么,首先在dispatchTaskInMainThread方法中,我们使用dispatch_get_global_queue函数获取到全局并发队列,然后将downloadImage下载图片的方法作为任务添加到该全局队列中。在downloadImage方法里,当图片下载完成后通过dispatch_get_main_queue函数获取到主队列,也就是在主线程中对图片进行处理,这样...
//方式一//同步执行任务 dispatch_sync(globalQueue, ^{ //执行任务 });//方式二//异步执行任务dispatch_async(globalQueue, ^{ //执行任务 }); 7.2任务执行的顺序 //全局并发队列同步执行任务,在主线程执行会导致页面卡顿。dispatch_queue_t globalQueue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_...
Main Dispatch Queue,主线程,串行队列,主要负责界面更新和响应,所以当我们需要异步更新界面时,需要将任务添加到该队列中。 Global Dispatch Queue,全局队列,并行队列,并行任务都可以放在这里面。 常见的使用场景: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{/*** CPU密集操作等并...
DISPATCH_QUEUE_PRIORITY_HIGH:高优先级。DISPATCH_QUEUE_PRIORITY_DEFAULT:默认优先级,低于高优先级。DISPATCH_QUEUE_PRIORITY_LOW:低优先级,低于高优先级和默认优先级。DISPATCH_QUEUE_PRIORITY_BACKGROUND:后台优先级,低于高优先级和后台线程执行的任务。 我们可以通过dispatch_get_global_queue函数再根据不同的优先级获...