shr*_*sva -2 grand-central-dispatch ios
我正在使用dispatch_queue_t创建一个GCD队列q1 = dispatch_queue_create("com.s1",NULL);
并使用dispatch_async在其上调度块
GCD是否对运行的线程做出任何保证?我注意到它总是在后台线程上执行.是否有可能在主/ UI线程上执行它.GCD如何决定运行什么线程?
线程不是队列,反之亦然.
当您将块分派给GCD队列时,GCD会确保它们按照该队列的规则运行 - 串行或同时运行,具体取决于您创建队列的方式.它不保证它将使用哪个线程.它决定如何根据自己的内部逻辑运行事物.也无法保证给定的串行队列始终使用相同的线程.
唯一的例外是通过调用获得的主队列dispatch_get_main_queue.这是一个在主线程上运行的串行队列.
如果您创建自己的队列,则在其上运行的块将不会在主线程/队列上运行.什么的线程,他们都运行在高达GCD.
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |