IOS-多线程知识

1.什么是进程,什么是线程?

一个运行的程序可以比作一个进程。一个进程中可以包括多个线程,但至少有一个主线程,每个线程可以比作程序的执行流。

2.运用线程应该注意的地方?

每个进程刚开始都会分配一定的内存,而创建的线程所用到内存是进程分配的内存。和用户交互的代码必须写在主线程中。主线程占1M内存,其他为512k的内存。

[NSThread currentThread]可以查看当前所在线程的任务。

3.多线程技术?

 (1)NSThread:轻量级

  创建线程方法:+(void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;

        - (void)initWithTarget:(id)target selector:(SEL)selector objdet:(id)argument;后接satrt方法;

  关键函数:-(void)performSelectorInBackground:(SEL)aSelectorwithObject:(id)arg

       当用到UI需要和用户交互时用到:-(void)performSelectorOnMainThread:(SEL)aSelectorwithObject:                       (id)arg waitUntilDone:(BOOL)wait; 

  线程休眠函数(调试使用):[NSThread sleepForTimeInterval:1.0f];

   (2)NSOperation:可以设置线程的数量setMaxConcurrentOperationCount,以及同队列线程的先后顺序addDependency

    一.Invocation创建线                     程:NSInvocationOperation *operation = [[NSInvocationOperation alloc]initWithTarget:self  

                                                                           selector:@selector(downloadImage:)  

                                                                             object:kURL];  

      NSOperationQueue *queue = [[NSOperationQueue alloc]init];  

    [queue setMaxConcurrentOperationCount:2]; //同一时间可以并发两个线程

      [queue addOperation:operation];

      

   进入主线程:[NSOperationQueue mainQueue]addOperationWithBlock;

   二.block创建线程

   NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{}];

    [queue addOpertion:op];

    进入主线程:[NSOpertionQueue mainQueue] addOperatonWithBlock:^{}];

 4.GCD:队列的思想:有主队列(主线程),全局队列(异步),串行队列(同步)

在主线程中一定是同步的,只有在全局队列中  async异步 为异步 , sync为同步

  

posted @ 2015-04-21 14:53  WeberZhou  阅读(123)  评论(0编辑  收藏  举报