1.在主线程执行下面代码的输出顺序是:
主队列异步执行:
NSLog(@"1");
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"2");
});
NSLog(@"3");
—Output:132—
主队列同步执行:
NSLog(@"1");
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"2");
});
NSLog(@"3");
—Output:主线程执行异步任务造成死锁,程序挂了—
全局队列异步执行:
NSLog(@"1");
dispatch_async(dispatch_get_global_queue(0, 0), ^{
NSLog(@"2");
});
NSLog(@"3");
—Output:132—
全局队列同步执行:
NSLog(@"1");
dispatch_sync(dispatch_get_global_queue(0, 0), ^{
NSLog(@"2");
});
NSLog(@"3");
—Output:123—
NSLog(@"1");
dispatch_queue_t queue = dispatch_queue_create("com.queue.serial", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
NSLog(@"2");
});
NSLog(@"3");
—Output:132—
NSLog(@"1");
dispatch_queue_t queue = dispatch_queue_create("com.queue.serial", DISPATCH_QUEUE_SERIAL);
dispatch_sync(queue, ^{
NSLog(@"2");
});
NSLog(@"3");
—Output:123—
dispatch_queue_t queue = dispatch_queue_create("com.queue.serial", DISPATCH_QUEUE_SERIAL);
NSLog(@"1");
dispatch_async(queue, ^{
NSLog(@"2");
dispatch_async(queue, ^{
NSLog(@"3");
});
});
NSLog(@"4");
—Output:1423—
dispatch_queue_t queue = dispatch_queue_create("com.queue.serial", DISPATCH_QUEUE_SERIAL);
NSLog(@"1");
dispatch_sync(queue, ^{
NSLog(@"2");
dispatch_async(queue, ^{
NSLog(@"3");
});
});
NSLog(@"4");
—Output:1243—
dispatch_queue_t queue = dispatch_queue_create("com.queue.serial", DISPATCH_QUEUE_SERIAL);
NSLog(@"1");
dispatch_sync(queue, ^{
NSLog(@"2");
dispatch_sync(queue, ^{
NSLog(@"3");
});
});
NSLog(@"4");
—Output:程序挂了—
dispatch_queue_t queue = dispatch_queue_create("com.queue.serial", DISPATCH_QUEUE_CONCURRENT);
NSLog(@"1");
dispatch_sync(queue, ^{
NSLog(@"2");
dispatch_sync(queue, ^{
NSLog(@"3");
});
});
NSLog(@"4");
—Output:1234—
dispatch_queue_t queue = dispatch_queue_create("com.queue.serial", DISPATCH_QUEUE_CONCURRENT);
NSLog(@"1");
dispatch_async(queue, ^{
NSLog(@"2");
dispatch_async(queue, ^{
NSLog(@"3");
});
});
NSLog(@"4");
—Output:1423—
dispatch_queue_t queue = dispatch_queue_create("com.queue.serial", DISPATCH_QUEUE_CONCURRENT);
NSLog(@"1");
dispatch_async(queue, ^{
NSLog(@"2");
dispatch_sync(queue, ^{
NSLog(@"3");
});
});
NSLog(@"4");
—Output:1423—
dispatch_queue_t queue = dispatch_queue_create("com.queue.serial", DISPATCH_QUEUE_CONCURRENT);
NSLog(@"1");
dispatch_sync(queue, ^{
NSLog(@"2");
dispatch_async(queue, ^{
NSLog(@"3");
});
});
NSLog(@"4");
—Output:1243—
dispatch_queue_t serial = dispatch_queue_create("com.queue.serial", DISPATCH_QUEUE_SERIAL);
NSLog(@"1");
dispatch_queue_t concurrent = dispatch_queue_create("com.queue.concurrent", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(serial, ^{
NSLog(@"2");
dispatch_sync(concurrent, ^{
NSLog(@"3");
});
NSLog(@"4");
});
NSLog(@"5");
—Output:15234—