/**< 自定义queue,默认串行: NULL == DISPATCH_QUEUE_SERIAL*/
/**< label:标签,用于标注queue*/
// dispatch_queue_t queue = dispatch_queue_create("label", NULL);
//
// dispatch_async(queue, ^{
// NSLog(@"test");
// });
/**< 自定义queue,并行或串行: DISPATCH_QUEUE_CONCURRENT或DISPATCH_QUEUE_SERIAL*/
// dispatch_queue_t serial_queue = dispatch_queue_create("标签", DISPATCH_QUEUE_CONCURRENT);
// dispatch_async(serial_queue, ^(){
// sleep(5);
// NSLog(@"block_1"); // 尽管为异步调用且延迟3秒,但如果在serial队列中,block_1仍然先于block_2被打印出来
// });
// dispatch_async(serial_queue, ^(){
// NSLog(@"block_2");
// });
/**< 延迟执行*/
/**< (int64_t)(delayInSeconds * NSEC_PER_SEC):转换成毫秒*/
// double delayInSeconds = 5.0;
// dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
// dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
// NSLog(@"5s delay");
// });
/**< 常用的异步并发执行*/
// dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0), ^{
// sleep(5);
// NSLog(@"block_1");
// });
//
// dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0), ^{
// NSLog(@"block_2");
// });
/**< 异步并回调主线程,常用ui更新*/
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"to do with ui");
});
});
Translate
2014年3月24日 星期一
几种常见的GCD用法
GCD详细介绍
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言