rb6*_*612 4 multithreading objective-c grand-central-dispatch ios swift
假设我从并发队列中调用dispatch_sync - 它会阻塞整个队列还是仅阻塞该执行线程?
dispatch_sync 将阻塞调用者线程直到执行完成,并发队列有多个线程,因此它只会阻塞该队列上的其中一个线程,其他线程仍将执行。
苹果对此是这么说的:
将块提交到调度队列以进行同步执行。与dispatch_async不同,该函数在块完成之前不会返回。调用此函数并以当前队列为目标会导致死锁。
与dispatch_async不同的是,不会在目标队列上执行retain。因为对此函数的调用是同步的,所以它“借用”了调用者的引用。而且,没有对块执行Block_copy。
作为一种优化,该函数在可能的情况下调用当前线程上的块。
| 归档时间: |
|
| 查看次数: |
1269 次 |
| 最近记录: |