1.线程和进程的区别
进程是应用程序,是操作系统的基本结构,用来管理资源。
线程是程序用来处理任务的,一个进程可以有一个或多个线程。
2.多线程
一个CPU只能同时处理一个线程,但是可以快速切换线程,造成同时处理多个线程的假象。
3.串行队列与并发队列
串行是指多个线程按顺序执行
并发是指多个线程同时执行,其实就是CPU在多个线程中快速切换
4.同步与异步
同步是指任务一项接着一项完成,前面一个任务处理完以后才会处理下一个任务,不开启新线程。
异步是指同时处理多个任务,互不干扰,开启新线程。
5.实现多线程的四种方法
(1)pthread
(2)NSThread
(3)GCD
(4)NSOperation
6.GCD
GCD 是基于NSThread进行封装
GCD 有3中队列,全局并发队列 dispatch_get_global_queue(0,0) 主队列dispatch_get_main_queue() , 其他队列 dispatch_queue_create(0,0)
其中dispatch_get_global_queue(0,0)是全局并发队列,方便使用。并发队列可以同时多个线程一起执行、
dispatch_get_main_queue() 是给串行队列,用来给主线程用的
dispatch_queue_create(0,0) 可以根据传的参数来确定队列是串行队列DISPATCH_QUEUE_SERIAL或者并行队列DISPATCH_QUEUE_CONCURRENT
所以有3种队列,2中线程执行方式,就有了6中组合
1.串行同步 —— 任务一件一件按顺序处理,不开启新的线程
2.串行异步 —— 任务一件一件按顺序处理,开启新线程
3.并行同步 —— 虽然是并行,但是因为是同步的,任务仍然按顺序进行,开启新的线程
4.并行异步 —— 任务交叉进行,互不干扰,开启新的线程
5.主队列同步 —— 主队列比较特殊,由于主队列存在一个syncMain的线程,当其他线程加进队列来以后,线程需要等syncMain执行完毕才会执行新加入的线程,而新线程会等待syncMain处理完毕才会执行下一个线程,由此造成线程死锁进而程序崩溃
6.主队列异步 —— 任务交叉进行,互不干扰,开启新的线程
GCD 梳理
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
- 前言 各路大神对GCD的原理解析和使用方法网上到处都是,可以轻松搜索到。那为什么笔者还要自己动手写一篇所谓的"葵花...
- 原文:http://www.cocoachina.com/ios/20170707/19769.html 本文主要...