搜索
您的当前位置:首页正文

主队列和主线程

来源:二三娱乐

队列的概念和作用:

队列不是线程,队列是用来组织任务的,将任务加到队列中,任务会按照加入到队列中先后顺序依次执行,如果是同步队列,会在当前线程中执行,如果是异步队列,则操作系统会根据系统资源去创建新的线程去处理队列中的任务,线程的创建、维护和销毁由操作系统管理,系统会给我做很多优化

队列的分类:

串行队列:
按照FIFO原则,顺序执行,先加入队列中的任务先执行,一个任务一任务的顺序执行,只有等到队列中上一个任务完成,才能执行下一个任务
并行队列:
任务是按照加入到队列中的顺序开始执行,但任务完成时的顺序是不确定的

队列和线程的关系:

在一个线程内可能有多个队列,这些队列可能是串行的或者是并行的,按照同步或者异步的方式工作
异步的,则会开启新的线程工作
同步的,会在当前线程内工作,不会创建新的线程
注意:并行同步队列,不会创建新的线程而且会是顺序执行相当于串行同步队列

主线程和主队列的关系:

主队列是主线中的一个串行队列
所有的和UI的操作(刷新或者点击按钮)都必须在主线程中的主队列中去执行
否则无法更新UI
每一个应用程序只有唯一的一个主队列用来update UI
补充一点:如果在主线程中创建自定义队列(串行或者并行均可),在这个队列中执行同步任务,同样可以更新UI操作,主队列中可以更新UI,自定义队列也可以更新UI,但自定义队列的更新UI的前提是在主线程中执行同步任务

1.主线程并行队列同步执行 
   任务会在主线中执行,不会创建新的线程,并且是顺序执行的

2.主线程并行队列异步执行
 任务会异步无顺序的执行,并且创建新的多个线程

3.主线程串行队列同步执行
 主线程中 顺序执行 不会创建新的线程

4.主线程串行队列异步执行
   只创建一个线程 顺序执行

5.主线程 主队列 同步执行
  会导致死锁,程序卡死 

6.主线程主队列异步执行
  不会创建新的线程,但是却是异步的,先执行完队列中已经添加的任务,然后再执行队列中添加的 自定义任务

Top