dispatch - 多线程 OR 单线程

dispatch_async 不会阻塞当前线程

dispatch_async 阻塞当前线程,一直等到它提交的任务,被某个另外的线程执行完毕,再继续进行。


Queue的类型,决定了任务的处理能力,concurrent的比Serial的吞吐量大。但是在具体执行的时候,最终使用多少个线程,要依赖于queue的任务数量。

不见得说,concurrent中的Task,都是被不同的线程处理。如果每次提交一个Task,然后用sync的方式-提交,完成后,再提交下一个。 那么所提交的任务,可能仅仅被一个线程处理。


是否使用多线程,用什么线程,是dispatch自己决定的。USER来说 不需要 知道这些信息。

如果需要,可以自己使用THREAD.


是否阻塞当前线程,和多线程无关。

如果把一个耗时的任务,通过dispatch 再 Dispatch的方式,提交到main_queue中,那么最终,UI 还是会 NO Reponse. 和在UI响应事件中,直接调用,没有区别。

你可能感兴趣的:(dispatch - 多线程 OR 单线程)