dispatch_queue 의 sync, async 와 Thread 의 관계
결론
Queue 의 동작과 Thread 와는 관계가 없다.
dispatch_sync 로 실행했다면 실행한 Thread 에서,
dispatch_async 로 실행했다면 WorkerThread 에서 동작한다.
Queue type 이 SERIAL 인지 CONCURRENT 인지는 중요하지 않다.
Test code
Serial Queue
dispatch_queue_t serialQueue = dispatch_queue_create("serial", DISPATCH_QUEUE_SERIAL);
dispatch_sync(serialQueue, ^{
NSLog(@"serialQueue_sync : %@", [NSThread isMainThread] ? @"YES" : @"NO");
//YES
});
dispatch_async(serialQueue, ^{
NSLog(@"serialQueue_async : %@", [NSThread isMainThread] ? @"YES" : @"NO");
//NO
});
Concurrent Queue (Global Queue)
dispatch_queue_t concurrentQueue = dispatch_queue_create("concurrent", DISPATCH_QUEUE_CONCURRENT);
dispatch_sync(concurrentQueue, ^{
NSLog(@"concurrentQueue_sync : %@", [NSThread isMainThread] ? @"YES" : @"NO");
//YES
});
dispatch_async(concurrentQueue, ^{
NSLog(@"concurrentQueue_async : %@", [NSThread isMainThread] ? @"YES" : @"NO");
//NO
});