资讯专栏INFORMATION COLUMN

IOS 并发

pingan8787 / 2343人阅读

摘要:苹果官方文档主线程中我们写的代码是被来调用主线程有一个用于接受主线程用于处理界面接触的处理代码运行时候会阻塞主线程三种实现线程的方法进入后台进程执行一个耗时的方法后台执行的方法回到主线程定义一个把加入到执行队列大中枢相对是更底层的框架用

苹果官方文档

doc

主线程 main Thread

ios中我们写的代码是被Event来调用
主线程 有一个 run loop用于接受Events
主线程 用于处理界面接触的Event
Event处理代码运行时候会阻塞主线程

三种实现线程的方法

//进入后台进程 执行一个耗时的方法
[self performSelectorInBackground:@selector(backWork) withObject:nil];
//后台执行的方法
-(void) backWork{
    NCLog(@"background thread %@",[NSThread currentThread]); 
    sleep(5);
    //回到主线程 
    [self performSelectorOnMainThread:@selector(mainWork) withObject:nil waitUntilDone:NO];
}

-(void) mainWork{
    NCLog(@"main  thread %@",[NSThread currentThread]);
[self.indicator stopAnimating];
}

NSBlockOperation

 //定义 一个task
     NSBlockOperation *op=[NSBlockOperation blockOperationWithBlock:^{
        NCLog(@"NSBlockOperation xxx....");
         sleep(5);
        [self performSelectorOnMainThread:@selector(mainWork) withObject:nil waitUntilDone:NO];
    }];
    //把task 加入到执行队列
    NSOperationQueue *queue = [[NSOperationQueue alloc]init];
    [queue addOperation:op];

GCD 大中枢 相对NSOperation是更底层的框架.
用了block代码更加简洁

```
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NCLog(@"dispatch_async xxx....");
[self.indicator startAnimating];
sleep(5); dispatch_async(dispatch_get_main_queue(), ^{
[self mainWork];
[self.indicator stopAnimating];

    });
});

```

参考 http://blog.csdn.net/totogo2010/article/details/8016129

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/15687.html

相关文章

  • IOS学习总结(1)——关于并发

    摘要:我就个人感受而言,总结一下并发编程以及相关的一些知识。实际上,所有的并发编程都是构建于线程之上的包括和操作队列。当方法执行结束后,运行时会特地清理并弃掉线程。 本文仅作为个人学习总结记录使用!能力有限,难免会有疏漏和错误,还望指出。共同进步。 独白 工作学习IOS已经有半年了,一直都想抽出时间记录一下自己的学习和工作经验,但都写到一半,就没有然后了。关于并发编程,其实国外国内已经有...

    summerpxy 评论0 收藏0
  • iOS多线程整理

    摘要:介绍详细内容可参考多线程归纳与总结管理多线程困难,推荐使用和。线程判定根据来决定在哪个线程中执行方法。其他问题多线程与的关系每个线程都有一个,主线程默认开启,子线程默 iOS多线程整理 知识点梳理 1.线程进程的区别: > 进程:应用程序的实例 > 线程:任务调度的基本单元 2.队列种类: 串行队列、并发队列、主队列(有经过特殊处理的串行队列)、全局队列(属于并发队列) > 串行队...

    woshicixide 评论0 收藏0
  • 【腾讯Bugly干货分享】微信 iOS SQLite 源码优化实践分享实录

    摘要:每周都会举行嘉宾分享,话题讨论等活动。本期,我们邀请了腾讯开发工程师张三华,为大家分享微信源码优化实践。第一次进行这种微信群分享,可能准备的不是太充分。以操作在上的实现为例通过进行线程锁,防止其他线程介入。 本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57b6a... Dev Club 是一个交流移动开发技术,结...

    netScorpion 评论0 收藏0
  • 【腾讯Bugly干货分享】微信 iOS SQLite 源码优化实践分享实录

    摘要:每周都会举行嘉宾分享,话题讨论等活动。本期,我们邀请了腾讯开发工程师张三华,为大家分享微信源码优化实践。第一次进行这种微信群分享,可能准备的不是太充分。以操作在上的实现为例通过进行线程锁,防止其他线程介入。 本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57b6a... Dev Club 是一个交流移动开发技术,结...

    villainhr 评论0 收藏0
  • 【腾讯Bugly干货分享】微信 iOS SQLite 源码优化实践

    摘要:在微信的卡顿监控系统上,数据库相关的卡顿不断上升。本文将分享在源码上进行的多线程并发性能优化等,并介绍优化相关的原理。的多句柄方案及方案实际是支持多线程几乎无锁地并发操作。这就意味着统计前后,都是需要加线程锁,防止出 本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57b58... 作者:张三华 前言 随着微信iOS...

    Rocko 评论0 收藏0
  • 【腾讯Bugly干货分享】微信 iOS SQLite 源码优化实践

    摘要:在微信的卡顿监控系统上,数据库相关的卡顿不断上升。本文将分享在源码上进行的多线程并发性能优化等,并介绍优化相关的原理。的多句柄方案及方案实际是支持多线程几乎无锁地并发操作。这就意味着统计前后,都是需要加线程锁,防止出 本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57b58... 作者:张三华 前言 随着微信iOS...

    lolomaco 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<