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

本文介绍了多线程编程中的线程成本及其影响,包括内存和性能资源的占用,以及设计线程应用可能带来的数据结构改变。接着详细讲解了创建线程的多种方法,如使用NSThread、POSIX线程API以及通过NSObject生成线程,提供了实例代码展示如何在不同场景下创建和管理线程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 上面同样可用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值