码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 多线程

时间:2015-03-10 19:16:29      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

多线程

 

NSThread:

1.NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(thread) object:nil];

[thread start];

 

2.[NSThread detachNewThreadSelector:@selector(operation1) toTarget:self withObject:@"哈哈哈”];

 

3.[self performSelectorInBackground:@selector(thread:) withObject:@"hhhh"];

 

 

 

 

 

 

NSOperation:

优点:不需要管理生命周期,可以把精力放在代码上上面

     缺点:抽象类,必须要使用其子类对象才能用

顺序:

1.创建队列

2.创建任务

3.返回主线程

 

queue

[NSOperationQueue mainQueue]

 

回主线程

self performSelectorOnMainThread:<#(SEL)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>

dispatch_async(dispatch_get_main_queue(), ^{

        

 

    });

 

1.NSOperationQueue *operationQ = [[NSOperationQueue alloc]init];

[operationQ addOperationWithBlock:^{

        //执行的事件

        for (int i = 0; i < 50; i++) {

            NSLog(@"thread线程---》%d",i);

        }

       }];

 

2.NSOperationQueue *operationQ = [[NSOperationQueue alloc]init];

operationQ.maxConcurrentOperationCount = 2;

 

NSInvocationOperation *invocation1 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(operation1) object:nil];

 

[invocation1 setQueuePriority:NSOperationQueuePriorityVeryLow];

 

[operationQ addOperation:invocation1];

 

 

 

 

GCD(Grand Central Dispath ):

优点

     多核硬件上,性能更佳

     操作简单,只要告诉GCD你要执行的任务,不需要管理线程

 

1.创建一个队列

(1)并行队列:可以多个线程同时执行

参数1.优先级(一般给0),参数2.标示(正常为0)

dispatch_queue_t queue = dispatch_get_global_queue(<#long identifier#>, <#unsigned long flags#>)

 

 

(2)串行队列:并发数为1,

参数1.线程名称(c字符串),参数2.直接给NULL

dispatch_queue_t queue = dispatch_queue_create(<#const char *label#>, <#dispatch_queue_attr_t attr#>)

 

 

 

2.任务

     异步:开辟新线程,在新线程上执行

     同步:在当前线程上执行

 (1)同步

//参数1.放入的队列,参数2.我们要做的任务

dispatch_sync(<#dispatch_queue_t queue#>, <#^(void)block#>)

 

 

 

 

 

(2)异步

//参数1.放入的队列,参数2.我们要做的任务

dispatch_async(<#dispatch_queue_t queue#>, <#^(void)block#>)

 

 

 

 

 

3.返回

1.dispatch_async(dispatch_get_main_queue(), ^{

                        //回到主线程执行的任务

        });

2.self performSelectorOnMainThread:<#(SEL)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>

 

 

 

 

 

 

//线程组

//    dispatch_group_t group = dispatch_group_create();

//    

//    dispatch_queue_t queue = dispatch_get_global_queue(0, 0);

//    

//    dispatch_group_async(group, queue, ^{

//        //子线程操作的内容

//    });

//    

//    

//    dispatch_group_notify(group, dispatch_get_main_queue(), ^{

//        //回到主线程之后做得操作

//    });

 

 

 

 

 

 

 

 

 

 

 

 

 

 

iOS 多线程

标签:

原文地址:http://www.cnblogs.com/T2015/p/4326732.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!