GCD一个面试题
// main thread
NSLog(@"a");
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"b");
});
dispatch_async(dispatch_get_global_queue(0, 0), ^{
NSLog(@“c”);
});
结果:
用xcode打印应该是a, c, b
但是真实的结果应该是a, b, c 或者 a, c, b
由于b在主线程中打印,由于主线程可能有其他耗时的任务在,所以b的打印再c之后了
答案可见下面的实例中,这个打印结果b在100个c中间某个位置打印出来的
// main thread
NSLog(@"a");
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"b");
});
dispatch_async(dispatch_get_global_queue(0, 0), ^{
for (int i = 0; i < 100; i++) {
NSLog(@"c");
}
});