dispatch_get_global_queue会获取一个全局队列,我们姑且理解为系统为我们开启的一些全局线程。我们用priority指定队列的优先级,而flag作为保留字段备用(一般为0)。 dispatch_get_main_queue会返回主队列,也就是UI队列。它一般用于在其它队列中异步完成了一些工作后,需要在UI队列中更新界面(比如上面代码中
dispatch_async(dispatch_get_main_queue()) {print("Handle image and display in\(NSThread.currentThread())") } } } } 我们来看看上面代码都做了些什么,首先在dispatchTaskInMainThread方法中,我们使用dispatch_get_global_queue函数获取到全局并发队列,然后将downloadImage下载图片的方法作为任务添加到该全局队列...
dispatch_get_global_queue 会获取一个全局队列,我们姑且理解为系统为我们开启的一些全局线程。我们用priority指定队列的优先级,而flag作为保留字段备用(一般为0)。 dispatch_get_main_queue 会返回主队列,也就是UI队列。它一般用于在其它队列中异步完成了一些工作后,需要在UI队列中更新界面(比如上面代码中的[self upd...
// dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSLog(@"1"); }); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ sleep(2); ...
用 dispatch_get_global_queue 方法获取全局队列时,第一个参数有 4 种类型可选: DISPATCH_QUEUE_PRIORITY_HIGH DISPATCH_QUEUE_PRIORITY_DEFAULT DISPATCH_QUEUE_PRIORITY_LOW DISPATCH_QUEUE_PRIORITY_BACKGROUND串行队列异步执行时,切到主线程刷 UI 也需要时间,切换完成之前,指令可能已经执行到下个循环了。但是看起来...
dispatch_queue_t myQueue = dispatch_queue_create(queueName, NULL);3. Concurrent queue(global dispatch queue):可以同时运行多个任务,每个任务的启动时间是按照加入queue的顺序,结束的顺序依赖各自的任务.使用dispatch_get_global_queue获得.所以我们可以大致了解使用GCD的框架:dispatch_async(getDataQueue,^{//获取...
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, ^{ ...
我们可以通过dispatch_get_global_queue函数再根据不同的优先级获取不同的全局并发队列,类型为dispatch_queue_t: lethighPriorityQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0) letdefaultPriorityQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) ...
dispatch_async(dispatch_get_global_queue(0, 0), ^{ progress.completedUnitCount = 10; usleep(100000); progress.completedUnitCount = 20; usleep(100000); progress.completedUnitCount = 30; usleep(100000); reply(YES); }); return progress; ...
dispatch_async(dispatch_get_global_queue(0, 0), ^{ progress.completedUnitCount = 10; usleep(100000); progress.completedUnitCount = 20; usleep(100000); progress.completedUnitCount = 30; usleep(100000); reply(YES); }); return progress; ...