进程、线程、任务
//进程(process),指的是一个正在运行中的可执行文件。每一个进程都拥有独立的虚拟内存空间和系统资源,包括端口权限等,且至少包含一个主线程和任意数量的辅助线程。另外,当一个进程的主线程退出时,这个进程就结束了;
//线程(thread),指的是一个独立的代码执行路径,也就是说线程是代码执行路径的最小分支。在 iOS 中,线程的底层实现是基于 POSIX threads API 的,也就是我们常说的 pthreads ;
//任务(task),指的是我们需要执行的工作,是一个抽象的概念,用通俗的话说,就是一段代码。
串行、并发
//串行和并发的主要区别在于允许同时执行的任务数量。
串行,指的是一次只能执行一个任务,必须等一个任务执行完成后才能执行下一个任务;
并发,则指的是允许多个任务同时执行。
同步、异步
//同步和异步操作的主要区别在于是否等待操作执行完成,亦即是否阻塞当前线程。
同步操作会等待操作执行完成后再继续执行接下来的代码;
异步操作则恰好相反,它会在调用后立即返回,不会等待操作的执行结果。
队列、线程
//在 iOS 中,有两种不同类型的队列,分别是串行队列和并发队列。
串行队列一次只能执行一个任务,而并发队列则可以允许多个任务同时执行。iOS 系统就是使用这些队列来进行任务调度的,它会根据调度任务的需要和系统当前的负载情况动态地创建和销毁线程,而不需要我们手动地管理。