多线程基础知识

1,线程和进程的区别

进程:是系统对资源进行分配和调度的最小单位,主要管理资源

线程:是进程的基本执行单元,一个进程包含有多个线程,其中有一条主线程(主要用来处理UI,更新UI的操作都必须在主线程中完成,不要把耗时操作放在主线程中,否则会卡住界面)

多核概念:核(CPU)一个CPU只能处理一个线程,但CPU可以在多条线程之间快速切换。

2,什么是多线程

多线程:我们平常的开发中完全可以不用到多线程,使用多线程的目的是为了app的性能优化,使用多线程可以将任务分分批执行,通过提高资源使用率来提高系统总体的效率。

3,多线程的实现方式有哪几种

  ①pthread

  ②NSthread :需要我们手动管理,NSThread比其他两种多线程方案较轻量级,更直观地控制线程对象

    创建:NSThread *thread1 = [NSThread alloc] initWithTarget:执行方法的对象selector:新线程绑定的方法 object:方法中的参数

    [thread1 start];//开启线程

    [thread1 cancel];//将来某个时间结束

    [NSThread exit];//立即结束

    阻塞休眠:

    [NSThread sleepForTimeInterval:2];

    [NSThread sleepUntilDate:[NSDate date]];//比如设置启动页时间

 

  ③GCD

    同步:同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。

    异步:在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。

    串行并行,针对cpu来讲,单核并发未加并发,多核并发才是真的并发

 

  ④NSOperation:NSOperation是基于GCD之上的更高一层封装,需要创建一个操作队列,并用NSBlockOperation创建操作添加到操作队列,队列会自动开辟子线程来执行任务。

      创建quene:   NSOperationQueue *queue = [[NSOperationQueue alloc] init];//默认并发

    可通过改变并发数来实现串行还是并发:queue.maxConcurrentOperationCount = 1; //并发数为1时该操作队列为串行

    添加到操作队列:[queue addOperationWithBlock:^{
          //进行的操作
           }];

 

 

 

 

 

 

 

 

 

 

posted @ 2018-02-27 15:40  zfcc  阅读(116)  评论(0编辑  收藏  举报