注意:更新内容会同步到GitHub iOSWiki-知识体系总结
总结-多线程
iOS知识点/操作系统 #iOS体系总结
核心掌握
基础
进程是什么?有哪几种状态?进程和线程的区别?
什么是并发?什么是并行?并发和并行的区别?
你对多线程的理解?多线程的底层原理?主要应用?多线程的优缺点?
iOS多线程有哪些实现方案?说说你的理解?
NSThread(对应Swift中的Thread)内部实现的原理是什么?启动流程又是怎样的?2种初始化方法有什么区别?怎样实现一个常驻线程? 自定义Runloop的应用-线程保活
多线程会有哪些安全隐患?一般有什么解决方案?
死锁产生的条件有哪些?
多线程间怎么通信?底层原理是什么?
GCD
GCD全面详解
你对GCD的理解?
创建一个GCD队列?各个参数有什么作用?
GCD有哪几种队列?有什么特点?主队列和全局队列分别是什么队列?
GCD队列的执行方式有什么区别?不同队列不同执行方式的区别?主队列异步执行多个任务会开启线程吗?为什么?
GCD什么情况会发生死锁?原因是什么?这个原因是由于线程循环等待引起的还是队列?手写几种常见死锁情况?
GCD任务提交方式有哪些?DispatchWorkItem 提交有什么好处?
GCD延迟执行DispatchTime和DispatchWillTime有什么区别?
你对DispatchSource的理解?用过哪些source?DispatchSourceProtocol常见方案的作用?手写一个?DispatchSourceTimer实现的定时器?它和timer比哪个更精准的?
DispatchGroup的底层原理是什么?一般用在什么场景?有哪几种添加进组的方式,需要注意什么问题?
Dispatch_barrier的理解?一般用在什么场景?
DispatchSemaphore的理解?对信号量控制方法的理解?信号量底层原理又是怎样?一般用在什么场景?
iOS 多线程同步、锁和文件读写
iOS多线程同步方案有哪些?哪些锁的性能最好?
GCD实现线程同步方案有哪几种?分别手写一个实例?
iOS线程同步的各种锁的理解?有哪几种类型?高级锁和低级锁的区别?线程阻塞的2种方案区别是什么?使用锁的时候有哪些注意事项?
OSSpinLock的理解?不安全的原因?怎样使用?
os_unfair_lock的理解?怎样使用?
pthread_mutex锁的理解?有哪几种类型?普通pthread_mutex锁需要注意哪些问题?原因是什么?怎么解决?
pthread_mutex 递归锁的理解?应用场景?
::pthread_mutex 带条件锁的理解?wait和signal方法的理解?wait方法休眠时这个已加锁线程会放开锁吗?被唤醒时会自动加锁吗?signal方法调用后被唤醒的其他线程会立马持有锁吗?什么时候其他线程有机会持有锁?带条件pthread_mutex锁怎样使用?::
NSLock和NSRecursiveLock的理解?怎样使用?
NSCondition 条件锁的理解?怎样使用?
NSConditionLock 条件锁的理解?常用方法的理解?怎样使用?
文件读写安全方案(多读单写)有哪几种解决方案?pthread_rwlock的理解?怎样使用?DispatchBarrier(zha栅栏)怎样实现多读单写?
PerformSelector相关
PerformSelector详解
你对PerformSelector几个方法的理解?哪几种方法是同步执行的?哪几种方法是异步执行的?
同步执行的底层原理是怎样的?
异步延迟执行底层原理又是怎样的?
线程间通信方法底层原理是怎样的?waitUntildone有什么作用?inBackground方法会开启新线程吗?