NSThread、GCD、NSOperation多线程区别

1、NSThread

NSThread是封装程度最小最轻量级的,使用更灵活,但是需要手动管理线程的生命周期、线程同步和线程加锁等,线程开销大;

    [NSThread isMultiThreaded];//是否开启了多线程
    [NSThread mainThread];//获取主线程
    [NSThread currentThread];//获取当前线程
    [NSThread sleepForTimeInterval:3];//线程睡眠3s

2、GCD

同步异步决定是否具备开启线程的能力
串行并行决定代码执行的先后顺序

    dispatch_sync//同步
    dispatch_async//异步
    dispatch_queue_t//主要分为两种,串行、并行
    dispatch_queue_create("concurrent_queue",DISPATCH_QUEUE_CONCURRENT);//并发
    dispatch_queue_create("serial_queue", DISPATCH_QUEUE_SERIAL)//串行
    dispatch_once_t//代码只会执行一次,用于单例
    dispatch_after;//延迟操作
    dispatch_get_main_queue;//回到主线程操作

3、NSOperation

NSOperation是基于GCD封装的,比GCD可控性更强;可以加入操作依赖(addDependency)、设置操作队列最大可并发执行的操作个数(setMaxConcurrentOperationCount)、取消操作(cancel)等,需要使用两个它的实体子类:NSBlockOperation和NSInvocationOperation,或者继承NSOperation自定义子类;NSBlockOperation和NSInvocationOperation用法主要区别是:前者执行指定的方法,后者执行代码块,相对来说后者更加灵活易用。NSOperation操作配置完成后便可调用start函数在当前线程执行,如果要异步执行避免阻塞当前线程则可以加入NSOperationQueue异步操作。

你可能感兴趣的:(NSThread、GCD、NSOperation多线程区别)