您的位置:首页 > 其它

GCD中的概念理解

2018-06-27 09:09 141 查看
串行队列,任务是一个一个执行的,比如第一个是同步任务,第二个是异步任务,他们即使在不同的线程,但是需要按照加入时的顺序依次执行。

并发队列,任务是可以并发执行的,可以将任务放在不同的线程,任务的执行时没有顺序的。

同步任务,表示当前线程一定要等待任务执行完才能继续执行下去,同步任务一般都在当前线程执行,有一种例外,就是如果同步任务放在了主队列,那一定是在主线程执行的。比如这样一种情况,在线程2里面给主队列添加了一个同步任务,那么这个任务一定是在主线程执行的,但是一般而言,如果不是加在主队列,添加在一般的队列,那么都是在当前线程执行。

异步任务,表示当前线程无需等待任务返回就可以直接执行接下来的程序,异步任务在其他线程执行,同样。

栅栏任务,栅栏任务必须等待它前面所有的任务执行完毕单独执行,期间不会有其他任务与它并行,栅栏任务之后的任务又可以并发执行了。栅栏任务只对并行队列有意义,因为本身串行队列就是按照顺序执行的,栅栏任务一定会等到前面的任务执行完的。发现一个问题,栅栏任务如果用全局并发队列是没有效果的,要自己创建的并发队列才有用。

用一张图会比较好理解:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: