首页 热点专区 小学知识 中学知识 出国留学 考研考公
您的当前位置:首页正文

iOS多线程排列组合(GCD)

2024-12-10 来源:要发发知识网


1. 串行队列,同步执行

示例代码:

运行结果:

结束可以看到是在主线程顺序执行的

2. 串行队列,异步执行

示例代码:

运行结果:

结论可以看到系统只开了一条线程,都是在线程3上执行的,并且是顺序执行

3. 并发队列,同步执行

示例代码:

运行结果:

结论可以看到是在主线程上顺序执行的,跟第一种结论是一样的, 由此可以看出,开不开线程是同步换是异步控制的

4. 并发队列,异步执行

示例代码:

运行结果:

结论看出开启了多条线程并且是无序执行的

5. 全局队列,同步执行

示例代码:

运行结果:

结论可以看出是在主线程上顺序执行的

6. 全局队列,异步执行

示例代码:

运行结果:

结论可以看出是开启的多条线程,并且执行的顺序是混乱的,跟并发队列异步执行的结果是一样的

7. 主队列,同步执行

示例代码:

运行结果:

结论可以看出来,发生"死锁"了,卡死了,卡死的原因是循环等待,主队列的东西要等主线程执行完,而因为是同步执行不能开线程,所以下面的任务要等上面的任务执行完,所以卡死。这是排列组合中唯一一个会卡死的组合

8. 主队列,异步执行

示例代码:

运行结果:

结论可以看出来是在主线程顺序执行的

总结:

1, 同步开线程,异步不开线程,开不开线程是由同步换是异步控制的!

2, 开几条线程,取决于串行队列换是并发队列,串行队列只开一条线程,并发队列开多条线程(异步情况下)

3, 主队列只能在主线程下执行任务,不能再其他线程上执行!


显示全文