多线程编程指南之线程管理(iOS,Mac os )
2016-02-25 09:25
351 查看
1.线程成本
多线程会占用内存和性能资源。
多线程另外一个需要考虑的成本是成产成本。设计一个线程应用有时候会需要根本性的改变你应用的数据结构的组织方式。要做这些改变可能需要避免使用同步,因为本身设计不好的应用可能会造成巨大的性能损失,增加开发一个线程应用所需的时间。然而避免这些消耗的话,可能再运行的时候带来更大的问题。
2.创建一个线程
创建低级别的线程相对简单。在所有情况下,你必须有一个函数或是方法作为线程的主入口点,你必须使用一个可用的线程历程启动你的线程。下面介绍比较常用的创建基本线程技术
2.1使用NSThread
使用NSThread来创建线程有两个方法
*使用detachNewThreadSelector:toTarget:withObject:类方法来生成一个新的线程
*创建一个新的NSThread对象,并调用它的start方法
如果你拥有一个NSThread,它的线程当前真正运行,你可以给改该线程发送消息的唯一方法是在你的应用程序里面的任何对象使用performSelector:onThread:withObject:waitUntilDone:方法
2.2 使用POSIX的多线程
基于c语言支持的使用POSIX线程API来创建线程的方法。
2.3 使用NSObject来生成一个线程
所有对象都可能生成一个新的线程,并用它来执行任意方法。方法performSelectInBackground:withObject:新生成一个脱离的线程,使用指定的方法作为新线程的主体入口点。
[myObj performSelectorInBackground:@select(doSomething) withObject:nil];
调用该方法的效果和你在当前对象里面使用 NSThread 的 detachNewThreadSelector:toTarget:withObject:传递 selectore,object 作为参数 的方法一样。新的线程将会被立即生成并运行,它使用默认的设置。在 selectore 内部,你必须配置线程就像你在任何线程里面一样。比如,你可能需要设置一个自动 释放池(如果你没有使用垃圾回收机制),在你要使用它的时候配置线程的 run loop。 关于更是介绍如果配置线程的信息
2.4使用其他线程技术
尽管 POSIX 例程和 NSThread 类被推荐使用来创建低级线程,但是其他基于 C 语 言的技术在 Mac OS X 上面同样可用。
多线程会占用内存和性能资源。
多线程另外一个需要考虑的成本是成产成本。设计一个线程应用有时候会需要根本性的改变你应用的数据结构的组织方式。要做这些改变可能需要避免使用同步,因为本身设计不好的应用可能会造成巨大的性能损失,增加开发一个线程应用所需的时间。然而避免这些消耗的话,可能再运行的时候带来更大的问题。
2.创建一个线程
创建低级别的线程相对简单。在所有情况下,你必须有一个函数或是方法作为线程的主入口点,你必须使用一个可用的线程历程启动你的线程。下面介绍比较常用的创建基本线程技术
2.1使用NSThread
使用NSThread来创建线程有两个方法
*使用detachNewThreadSelector:toTarget:withObject:类方法来生成一个新的线程
[NSThread detachNewThreadSelector:@selector(myMethod:)toTarget:self withObject:nil];
*创建一个新的NSThread对象,并调用它的start方法
NSThread*myThread=[[NSThread alloc] initWithTarget:self select:@select(myMethod:) object:nil]; [myThread start];
如果你拥有一个NSThread,它的线程当前真正运行,你可以给改该线程发送消息的唯一方法是在你的应用程序里面的任何对象使用performSelector:onThread:withObject:waitUntilDone:方法
2.2 使用POSIX的多线程
基于c语言支持的使用POSIX线程API来创建线程的方法。
2.3 使用NSObject来生成一个线程
所有对象都可能生成一个新的线程,并用它来执行任意方法。方法performSelectInBackground:withObject:新生成一个脱离的线程,使用指定的方法作为新线程的主体入口点。
[myObj performSelectorInBackground:@select(doSomething) withObject:nil];
调用该方法的效果和你在当前对象里面使用 NSThread 的 detachNewThreadSelector:toTarget:withObject:传递 selectore,object 作为参数 的方法一样。新的线程将会被立即生成并运行,它使用默认的设置。在 selectore 内部,你必须配置线程就像你在任何线程里面一样。比如,你可能需要设置一个自动 释放池(如果你没有使用垃圾回收机制),在你要使用它的时候配置线程的 run loop。 关于更是介绍如果配置线程的信息
2.4使用其他线程技术
尽管 POSIX 例程和 NSThread 类被推荐使用来创建低级线程,但是其他基于 C 语 言的技术在 Mac OS X 上面同样可用。
相关文章推荐
- ios 枚举
- 正则表达式简单语法规则和IOS的使用
- iOS消息机制
- iOS问题: 此证书的签发者无效
- kidd风的IOS日志之利用dispatch_once创建单例
- 原 iOS中的内存管理(下)
- iOS中的内存管理(上)
- iOS开发之AFN的基本使用
- iOS沙盒机制
- iOS Developer Libray (中文版)-- Defining Classes 定义类
- iOS获取设备信息与应用信息
- iOS编程中,中文字符转为拼音
- iOS 宏
- 四个月期间 我在蜂窝教育iOS培训
- 【转】iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- ios 下拉刷新
- ios 异步加载图片结合tableView SDWebImage
- iOS开发笔记
- iOS新的视频开发框架AVPlayerViewContoller与画中画技术
- 关于iOS上的对象映射公用方法-备