iOS中多线程的总结

@synchronized(锁对象){//需要锁定的代码}

线程间的通讯

[selfperformSelectorOnMainThread:@selector(<#selector#>) withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#>];

    [selfperformSelector:<#(nonnull SEL)#> onThread:<#(nonnull NSThread *)#> withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#>]

串行队列

             dispatch_queue_tqueue =dispatch_queue_create("wangjianye",NULL)

dispatch_queue_tqueue =dispatch_get_main_queue()     主队列

并发队列

dispatch_queue_tqueue =dispatch_get_global_queue(DISPATCH_TARGET_QUEUE_DEFAULT,0 )

同步函数

                dispatch_sync(queue, ^{


                    })

异步函数

                dispatch_async(queue, ^{


                    })


队列组

 dispatch_group_tgroup =dispatch_group_create();

   dispatch_group_async(group,queue, ^{


    })

   dispatch_group_async(group,queue, ^{


    })

   dispatch_group_notify(group, main_queue, ^{


    })


NSOperation和NSOperationQueue实现多线程的具体步骤

(1)先将执行的操作封装到NSOperation对象中

(2)然后将NSOperation对象添加到NSOperationQueue中

(3)系统会自动将NSOperation封装的操作放到一个新的线程中执行

NSOperation是个抽象类,并不具备封装操作的能力,必须使⽤它的子类

使用NSOperation⼦类的方式有3种:

(1)NSInvocationOperation

(2)NSBlockOperation

(3)自定义子类继承NSOperation,实现内部相应的⽅法

NSInvocationOperation的用法:

NSInvocationOperation*operation = [[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(run)object:nil];

    [operationstart];

NSBlockOperation的用法:

 NSBlockOperation*operation = [NSBlockOperationblockOperationWithBlock:^{


    }];

添加执行, 加不加都可以:

[operationaddExecutionBlock:^{


    }];

[operationaddExecutionBlock:^{


    }];

    [operationstart];

NSOperationQueue的用法:

NSOperationQueue*queue = [[NSOperationQueuealloc]init];


    [queue addOperation:operation0];

    [queue addOperation:operation1];

    [queue addOperation:operation2];

    [queueaddOperationWithBlock:^{


    }];

队列的取消操作:

[queuecancelAllOperations]

暂停与恢复队列:

 [queuesetSuspended:YES]

设置NSOperation 在queue的优先级

[operationsetQueuePriority:NSOperationQueuePriorityNormal]

设置 NSOperation 的依赖

[operationaddDependency:operation1]

设置NSOperation 的完成

[operationsetCompletionBlock:^{


    }];

自定义NSOperation的子类

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容