ios 开发中的多线程

本文详细介绍了iOS中实现多线程的四种主要方法:GCD(Grand Central Dispatch)、NSOperation和NSOperationQueue、NSThread以及线程间的同步机制。通过具体的代码示例展示了如何在iOS应用程序中使用这些技术来提高程序的运行效率和用户体验。



OS中使用多线程的原因:
1,iOS中只有主线程有直接修改Ui的权利
2,iPhone中主线程堆栈1M,新开辟的线程堆栈512K
3,多任务,多核,效率,用户体验共同决定

(一)GCD(Grand Centraldispatch)block和dispatch,可以简化多核多线程编程,iOS4以后支持
1,block的定义类似于函数指针;block对象(块对象);
可以存在block数组;
但block存储在函数栈中,注意大括号中的生命周期;
2,block典型用法,图片下载应用中的块应用,嵌套异步block块的使用,如果前面ok,则去UI更新
 

          dispatch_async(dispatch_queue_create("com.enormego.EGOImageLoader",NULL),^{
                  UIImage*image = styler(anImage);
                  [[EGOCachecurrentCache] setImage:image forKey:keyForURL(aURL, style)withTimeoutInterval:604800];
                  dispatch_async(dispatch_get_main_queue(), ^{
                        completion(image, aURL, nil);
                  });
            });

(二)NSOperation和NSOpertionQueue
1,一个继承自NSOperation的操作类,该类的实现中必须有 (void) main()方法
2,最简单的方法,将NSOperation的实例放入NSOpertionQueue中
3,可以在NSOpertionQueue中设置同时可以进行的操作数
(三)NSThread
1,detachNewThreadSelector此为简便方法,不用进行线程清理
[NSThread detachNewThreadSelector:@selector(myThreadMainMethod:)toTarget:self withObject:nil];

2,NSThread initialWithTarget,(void)start;方法,可以创建线程,但选择合适的时机启动线程
NSThread* myThread = [[NSThread alloc] initWithTarget:self
                                 selector:@selector(myThreadMainMethod:)
                                  object:nil];
[myThread start];


(四)线程间同步
1,原子锁属性,automic,noautomic,变量可以保证多线程访问
2,NSCondition,可以提供带条件的同步锁,解锁时,需要输入相同的条件才能解锁
3,NSLock, lock,unlock比较简单的同步锁
4,@synchronized(anObject)更简单的所方式,通常用在单例对象的创建上面


转自  : http://blog.sina.com.cn/s/blog_6707d8b301013cwo.html



【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值