adi*_*dit 1 iphone objective-c ipad ios
我对异步加载和主线程的概念有点困惑.当异步加载某些东西时,它是否意味着它不在主线程上运行?据我所知这是两个不同的概念,可以在主线程上异步运行某些东西,也可以异步在后台/辅助线程上运行.如果我错了,请纠正我.
不完全的.异步运行意味着它不会停止执行继续当前线程.这是一个重要的区别,因为完全可以异步执行某些操作,使其最终出现在主线程上(例如:dispatch_async(dispatch_get_main_queue(),^ {some block});),这意味着它不会阻止其他一些线程从继续,但阻止主线程.
因为主线程对应用程序非常重要,所以异步代码的最常见用法是避免阻塞它,但它并不是唯一的用途.
(编辑添加)
或许,从"与x相关的异步"的角度来考虑它更有用.如果你这样做,例如:
dispatch_async(aSerialQueue, ^{
work();
work();
});
Run Code Online (Sandbox Code Playgroud)
然后,两个工作调用相互同步,并且与aSerialQueue上的所有其他工作同步,但是对于其他所有工作都是异步的.
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |