您的位置:首页 > 移动开发 > IOS开发

多线程编程指南之线程管理(iOS,Mac os )

2016-02-25 09:25 351 查看
1.线程成本

多线程会占用内存和性能资源。

多线程另外一个需要考虑的成本是成产成本。设计一个线程应用有时候会需要根本性的改变你应用的数据结构的组织方式。要做这些改变可能需要避免使用同步,因为本身设计不好的应用可能会造成巨大的性能损失,增加开发一个线程应用所需的时间。然而避免这些消耗的话,可能再运行的时候带来更大的问题。

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 上面同样可用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: