很多资料都介绍说:GCD用来处理复杂的耗时操作,将这些操作放在GCD中就可以与让界面UI的绘制卡住,应该说是异步操作啊。
可是今天遇到一个能力比我强点的人非说是在队列里面取任务执行,并没有真正异步,我就有点糊涂了,怎么去验证这个到底是不是异步啊?
还有大家是怎么理解的?
注:唐巧博客GCD介绍:http://blog.devtang.com/blog/2012/02/22/use-gcd/
GCD是多核处理,有同步也有异步方法,可以开一个dispatchqueue处理数据,完了getmainqueue来刷新界面,可以用dispatchgroup来顺序执行多个任务,线程同步有barriar,延时可以用dispatchafter,单例创建可以用dispatchonce,定时器可以用dispatch_timer....总之GCD知识很多,多看看,取自己需要的。
GCD works by allowing specific tasks in a program that can be run in parallel to be queued up for execution and, depending on availability of processing resources, scheduling them to execute on any of the available processor cores[11][12] (referred to as "routing" by Apple).[13] GCD works by allowing specific tasks in a program that can be run in parallel to be queued up for execution and, depending on availability of processing resources, scheduling them to execute on any of the available processor cores[11][12] 应该是类似线程池的管理,不是单纯的队列。应该也是异步的
3楼 @crespoxiao 你说的大概就是如下的把:
// 后台执行:
dispatchasync(dispatchgetglobalqueue(0, 0), ^{ // something // 主线程执行: dispatchasync(dispatchgetmainqueue(), ^{ // something });
});
5楼 @zhangmeteor 多核肯定是多核的,但是到底是同步还是异步的,如上代码你觉得是异步的么?