以此为参考,以下示例 {could not} / {would not} 是否有任何理由导致 GCD 线程池仅在主线程上运行?
int main()
{
dispatch_queue_t myQueue = dispatch_queue_create("myQ",NULL); // create serial queue
//
dispatch_sync(myQueue, ^{/*some simple block*/});
....
dispatch_sync(myQueue, ^{/*some simple block*/});
}
我的理解是,GCD 会尽可能地优化性能,将块(如果有好处)交给任何可用的线程。然而,在 xcode 中监视这一点表明这可能只在主线程上运行。直到调度调用变为async
使用第二个线程。
我只想了解何时/为什么可能会或可能不会调用第二个线程。在此之前,我假设总是会调用第二个线程。