dispatch_get_global_queue会获取一个全局队列,我们姑且理解为系统为我们开启的一些全局线程。我们用priority指定队列的优先级,而flag作为保留字段备用(一般为0)。 dispatch_get_main_queue会返回主队列,也就是UI队列。它一般用于在其它队列中异步完成了一些工作后,需要在UI队列中更新界面(比如上面代码中的[self updateU...
dispatch_get_main_queue(); 1. 2. 3. 4. 5. 6. 7. 8. 9. dispatch_async 函数会将传入的block块放入指定的queue里运行。这个函数是异步的,这就意味着它会立即返回而不管block是否运行结束。因此,我们可以在block里运行各种耗时的操作(如网络请求) 而同时不会阻塞UI线程。 dispatch_get_global_queue 会...
dispatch_async(dispatch_get_main_queue()) {print("Handle image and display in\(NSThread.currentThread())") } } } } 我们来看看上面代码都做了些什么,首先在dispatchTaskInMainThread方法中,我们使用dispatch_get_global_queue函数获取到全局并发队列,然后将downloadImage下载图片的方法作为任务添加到该全局队列...
2. dispatch_queue_t queue = dispatch_queue_create("com.dispatch.concurrent", DISPATCH_QUEUE_CONCURRENT);//生成一个并发执行队列,block被分发到多个线程去执行 3. dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);//获得程序进程缺省产生的并发队列,可设定优先级来...
dispatch_queue_taQueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 1. 除了得到default的并发队列,还可以通过传递参数DISPATCH_QUEUE_PRIOPITY_HIGH和DISPATCH_QUEUE_PRIOPITY_LOW去得到高优先级或者低优先级的。(第二个参数是为以后扩展保留的) ...
dispatch_semaphore_signal(semaphore); 最后,还是回到生成消费者的例子,使用dispatch信号量是如何实现同步: dispatch_semaphore_tsem =dispatch_semaphore_create(0); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{ //消费者队列 ...
void*value = dispatch_get_specific("key"); NSLog(@"main queue: %d", value != NULL); }; //全局队列 dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0); // 异步加入全局队列里 dispatch_async(globalQueue, ^{ ...
OS_dispatch_queue是继承自OS_dispatch_object协议的协议,并且为遵循该协议的NSObject实例对象类型的指针定义了一个dispatch_queue_t的别名,看到这里我们恍然大悟,我们整天使用的dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);获取一个全局并发对象,而这个globalQueue其实...
DISPATCH_QUEUE_PRIORITY_HIGH:高优先级。DISPATCH_QUEUE_PRIORITY_DEFAULT:默认优先级,低于高优先级。DISPATCH_QUEUE_PRIORITY_LOW:低优先级,低于高优先级和默认优先级。DISPATCH_QUEUE_PRIORITY_BACKGROUND:后台优先级,低于高优先级和后台线程执行的任务。 我们可以通过dispatch_get_global_queue函数再根据不同的优先级获...
分派队列的优先级从其目标队列继承。使用dispatch_get_global_queue函数获得所需优先级的合适目标队列。 如果您将一个块提交给一个串行队列,而串行队列的目标队列是一个不同的串行队列,那么该块不会与提交给目标队列或具有相同目标队列的任何其他队列的块并发调用。