将来跳槽用

iOS多线程

2016-05-12  本文已影响0人  devZhang
1、NSOperation** 和 **NSOperationQueue
使用**NSOperation**的最简单的方法就是将其放入**NSOperationQueue**中。只要一个操作被加入到队列中,该队列就会启动并开始处理它。一旦操作完成,队列就会释放它。
因为**NSOperation**本身是一个抽象类,不能直接使用类的方法构建对象,需要通过其之类的方法来实现 
可以使用**NSInvokeOperation**通过指定的selector和target来实现操作
可以使用**NSBlockedOperation**通过Block来实现操作。
2、NSThread

相对于另外两种多线程技术,NSThread的优点是轻量级,缺点是需要自己管理线程的生命周期和线程同步。而且线程同步对数据的加锁会有一定的系统开销。
NSThread创建与启动主要由两种方式:

    //直接初始化
    NSThread *thread = [[NSThread alloc] init];
    //利用行为初始化
    NSThread *thread = [NSThread alloc] initWithTarget:(id) selector:(SEL) object:(id)argument;

要进行启动线程
-(void)start;

第二种利用行为初始化参数的具体说明:
selector :线程执行的方法,这个selector只能有一个参数,而且不能有返回值
target:selector消息发送对象
argument:传输给target的唯一参数,也可以是nil

3、最后说说GCD

GCD(Grand Central Dispatch)是一个大的主题,可以提高代码的执行效率与多核的利用率。包含了语言特性、runtime libraries 以及提供系统级及综合提高的系统增强功能。
GCD就是系统帮用户管理线程,而不需要在编写线程代码。程序员只需要专心编写执行某项功能的代码,添加到block或方法函数中。 有以下两种方法处理block或方法:
1)直接将block加入到dispatch queues (队列)中
2)讲Dispatch source 封装为一个特定类型的系统事件,的系统事件发生时提交一个特定的block对象或函数到dispatch queue ,然后,dispatch queue按先进先出的顺序,串行或并发执行任务。

这里的dispatch queue 是一个基于C的执行自定义任务机制,而 dispatch source 是基于C的系统事件异步处理机制。

上一篇 下一篇

猜你喜欢

热点阅读