多线程(pthread、NSThread、GCD)

pthread

C语言编写

跨平台可移植

线程生命周期需要我们来管理

使用困难

NSThread

面向对象的

可直接操作线程对象

线程生命周期需要我们来管理

使用简单

资源互斥(@synchronized(self)加锁,必须是同一把锁)


GCD 为了利用多核并行提出的方案
同步 不具备开启线程的能力
异步 具备开启线程的能力


并行 可以多个任务同时执行 任务要等到当前函数执行完成之后再开始
串行队列 不可以多个任务同时执行 任务要立刻执行

同步函数串行队列中的任务 不开启新的线程 串行执行
同步函数并行队列中的任务 不开启新的线程 串行执行
异步函数串行队列中的任务 开启一个新的线程 串行执行
异步函数并行队列中的任务 开启新的线程 并行执行
同步函数主队列中的任务 死循环
异步函数主队列中的任务 不开启新的线程 串行执行

在同步函数中执行串行队列的任务,如果任务中嵌套了要在当前串行队列执行的任务,就会死循环

barrier(不能用全局的并发队列,要自己创建)

apply(迭代)

once(once_token整个程序运行过程中执行一次)

group

原文地址:https://www.cnblogs.com/sea-star3/p/5301005.html