iOS面试8 - 多线程

2019-05-24  本文已影响0人  奋斗的老王

GCD

  1. 同步异步, 串行并发

    • 同步串行: dispatch_sync(serial_queue, ^{ // work; })
      • serial_queue线程同步
      • 主线程同步串行
      • 产生死锁的原因
    • 异步串行: dispatch_async(serial_queue, ^{ // work; })
    • 同步并发: dispatch_sync(concurrent_queue, ^{ // work; })
    • 异步并发: dispatch_async(concurrent_queue, ^{ // work; })
      • performSelector..方法的内部逻辑(13)
        • 当perform...afterDelay:方法的内部实现, 是向当前线程的Runloop中添加事件, 因为GCD底层没有提供runloop, 所以该方法不会被执行
  2. dispatch_barrier_async: 异步栅栏调用, 用来处理多读单写系统层级的解决方案

    • 怎样实现多读单写? 怎样利用GCD实现多读单写?(多线程对于共享数据的访问问题)
    • 读与读并发, 读与写互斥, 写与写互斥
      • 异步栅栏实现多读单写
  3. dispatch_group的使用和理解:

    • dispatch_group的使用场景
    • dispatch_group代码示例

NSOperation

NSThread

启动流程

多线程与锁

多线程面试总结

上一篇 下一篇

猜你喜欢

热点阅读