网站关键词优化代理电子商务网站开发目的
web/
2025/9/30 8:51:11/
文章来源:
网站关键词优化代理,电子商务网站开发目的,高周波做网站,做外贸网哪些网站免费多线程编程 (1) -NSThread 每个iOS应用程序都有个专门用来更新显示UI界面、处理用户触摸事件的主线程#xff0c;因此不能将其他太耗时的操作放在主线程中执行#xff0c;不然会造成主线程堵塞(出现卡机现象)#xff0c;带来极坏的用户体验。一般的解决方案就是将那些耗时的…多线程编程 (1) -NSThread 每个iOS应用程序都有个专门用来更新显示UI界面、处理用户触摸事件的主线程因此不能将其他太耗时的操作放在主线程中执行不然会造成主线程堵塞(出现卡机现象)带来极坏的用户体验。一般的解决方案就是将那些耗时的操作放到另外一个线程中去执行多线程编程是防止主线程堵塞增加运行效率的最佳方法。 iOS中有3种常见的多线程编程方法 1.NSThread 这种方法需要管理线程的生命周期、同步、加锁问题会导致一定的性能开销 2.NSOperation和NSOperationQueue 是基于OC实现的。NSOperation以面向对象的方式封装了需要执行的操作然后可以将这个操作放到一个NSOperationQueue中去异步执行。不必关心线程管理、同步等问题。 3.Grand Centeral Dispatch 简称GCDiOS4才开始支持是纯C语言的API。自iPad2开始苹果设备开始有了双核CPU为了充分利用这2个核GCD提供了一些新特性来支持多核并行编程 这篇文章简单介绍NSThread这个类一个NSThread实例就代表着一条线程 一、获取当前线程 NSThread *current [NSThread currentThread]; 二、获取主线程 1 NSThread *main [NSThread mainThread];
2 NSLog(主线程:%, main); 打印结果是 2013-12-28 21:36:38.599 thread[7499:c07] 主线程:NSThread: 0x71434e0{name (null), num 1} num相当于线程的idnum为1的都是主线程. 三 、NSThread的创建 1.动态方法 - (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument; * 在第2行创建了一条新线程然后在第4行调用start方法启动线程线程启动后会调用self的run:方法并且将tx作为方法参数 1 // 初始化线程
2 NSThread *thread [[[NSThread alloc] initWithTarget:self selector:selector(run:) object:tx] autorelease];
3 // 开启线程
4 [thread start]; 假如run:方法如下 1 - (void)run:(NSString *)string {
2 NSThread *current [NSThread currentThread];
3 NSLog(执行了run:方法-参数%当前线程%, string, current);
4 } 打印结果为: 2013-12-28 21:40:33.102 thread[7542:3e13] 执行了run:方法-参数mj当前线程NSThread: 0x889e8d0{name (null), num 3} 可以发现这条线程的num值为3说明不是主线程主线程的num是1 2.静态方法 (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument; [NSThread detachNewThreadSelector:selector(run:) toTarget:self withObject:tx]; 执行完上面代码后会马上启动一条新线程并且在这条线程上调用self的run:方法以tx为方法参数 3.隐式创建线程 [self performSelectorInBackground:selector(run:) withObject:tx]; 会隐式地创建一条新线程并且在这条线程上调用self的run:方法以tx为方法参数 四、暂停(休眠)当前线程 [NSThread sleepForTimeInterval:2]; NSDate *date [NSDate dateWithTimeInterval:2 sinceDate:[NSDate date]]; [NSThread sleepUntilDate:date]; 以上两种做法都是暂停当前线程2秒. 五、线程的其他操作 1.在指定线程上执行操作 [self performSelector:selector(run) onThread:thread withObject:nil waitUntilDone:YES]; * 上面代码的意思是在thread这条线程上调用self的run方法 * 最后的YES代表上面的代码会阻塞等run方法在thread线程执行完毕后上面的代码才会通过 2.在主线程上执行操作 [self performSelectorOnMainThread:selector(run) withObject:nil waitUntilDone:YES]; 在主线程调用self的run方法 3.在当前线程执行操作 [self performSelector:selector(run) withObject:nil]; 在当前线程调用self的run方法 六、优缺点 1.优点NSThread比其他多线程方案较轻量级更直观地控制线程对象 2.缺点需要自己管理线程的生命周期线程同步。线程同步对数据的加锁会有一定的系统开销 转载于:https://www.cnblogs.com/pzy121/p/4622645.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84364.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!