iOS面试题:多线程编程

  • NSThread:当需要进行一些耗时操作时会把耗时的操作放到线程中。线程同步:多个线程同时访问一个数据会出问题,NSlock、线程同步块、@synchronized(self){}。

  • NSOperationQueue操作队列(不需考虑线程同步问题)。编程的重点都放在main里面,NSInvocationOperation、BSBlockOperation、自定义Operation。创建一个操作绑定相应的方法,当把操作添加到操作队列中时,操作绑定的方法就会自动执行了,当把操作添加到操作队列中时,默认会调用main方法。

  • GCD(``Grand Central Dispatch`)宏大的中央调度,串行队列、并发队列、主线程队列;

  • 同步和异步:同步指第一个任务不执行完,不会开始第二个,异步是不管第一个有没有执行完,都开始第二个。

  • 串行和并行:串行是多个任务按一定顺序执行,并行是多个任务同时执行;

  • 代码是在分线程执行,在主线程嘟列中刷新UI。

多线程编程是防止主线程堵塞、增加运行效率的最佳方法。

  • Apple提供了NSOperation这个类,提供了一个优秀的多线程编程方法;
  • 一个NSOperationQueue操作队列,相当于一个线程管理器,而非一个线程,因为你可以设置这个线程管理器内可以并行运行的线程数量等。
  • 多线程是一个比较轻量级的方法来实现单个应用程序内多个代码执行路径。
  • iPhoneOS下的主线程的堆栈大小是1M。第二个线程开始就是512KB,并且该值不能通过编译器开关或线程API函数来更改,只有主线程有直接修改UI的能力。

更多:iOS面试题合集

你可能感兴趣的:(iOS面试题:多线程编程)