IOS面试题——OC中多线程实现与线程安全(10)
一 面试题汇总
- iOS多线程方案有哪些?如何选择?有什么区别?
- 串行队列,并行队列的区别?全局队列和主队列呢?
- 同步任务和异步任务的区别?
- 使用sync函数往当前串行队列中添加任务会发生什么现象?
- 异步并发执行任务1、任务2,等任务1、任务2都执行完毕后,再回到主线程执行任务3怎么实现?
- Group,
dispatch_barrier_async
,dispatch_semaphore
分别用来做什么? - 多线程安全问题有哪些?如何解决
- 自旋锁和互斥锁的区别?递归锁,条件锁是什么?
- atomic,noatomic的区别?
- iOS读写安全方案有哪些?读写锁pthread_rwlock,栅栏函数
- dispatch_barrier_async 如果传入的是一个串行或是一个全局的并发队列会发生什么现象?
二 面试题解答(仅供参考)
2.1 iOS多线程方案有哪些?如何选择?有什么区别?
1 | 在iOS开发中,有多种多线程方案可供选择。以下是其中一些主要的方案: |
2.2 串行队列,并行队列的区别?全局队列和主队列呢?
1 | 在 Grand Central Dispatch (GCD) 中,有四种主要的队列类型:串行队列、并行队列、全局队列和主队列。 |
2.3 同步任务和异步任务的区别?
1 | 同步任务和异步任务是指在多线程编程中,任务执行的方式不同的两种情况。 |
2.4 使用sync函数往当前串行队列中添加任务会发生什么现象?
1 | 当你使用 sync 函数往当前串行队列中添加任务时,会发生下面的情况: |
2.5 异步并发执行任务1、任务2,等任务1、任务2都执行完毕后,再回到主线程执行任务3怎么实现?
1 | // 创建一个并行队列 |
2.6 Group,dispatch_barrier_async
,dispatch_semaphore
分别用来做什么?
1 | 在 GCD 中,Group、dispatch_barrier_async 和 dispatch_semaphore 分别用于不同的目的。 |
2.7 多线程安全问题有哪些?如何解决
1 | 多线程安全问题是指在多线程环境下,由于多个线程同时访问共享资源而可能引发的问题。常见的多线程安全问题包括: |
2.8 自旋锁和互斥锁的区别?递归锁,条件锁是什么?
1 | 自旋锁(Spin Lock)和互斥锁(Mutex Lock)是多线程编程中常用的同步机制,它们都用于保护临界区,防止多个线程同时访问共享资源。 |
2.9 atomic,noatomic的区别?
1 | 在并发编程中,原子操作(Atomic Operation)和非原子操作(Non-Atomic Operation)之间有很大的区别。 |
2.10 iOS读写安全方案有哪些?读写锁pthread_rwlock,栅栏函数
1 | 在iOS开发中,确保数据的读写安全是非常重要的。以下是一些常用的读写安全方案: |
2.11 dispatch_barrier_async 如果传入的是一个串行或是一个全局的并发队列会发生什么现象?
1 | 如果 dispatch_barrier_async 函数传入的是一个串行队列或者是一个全局的并发队列,其行为会有所不同: |
三 参考
- 简书—OC中多线程实现与线程安全