最大线程限制?

14

我该在哪里找到关于iPhone应用程序允许的最大线程数的文档?另外,你有什么关于线程性能的经验吗?

谢谢!

3个回答

27

Mac Dev Center上的这个页面提供了您可以估算线程分配成本的信息:

内核占用1kb
iPhone上的堆栈空间为1mb
创建时间为90微秒

该指南建议,如果您生成50个线程,则将要求操作系统为您的应用程序分配128mb内存中的50mb:

  

此内存的空间在线程创建时设置在进程空间中,但与该内存相关联的实际页面直到需要时才会创建

那似乎是相当大的一笔金额 - 这篇博客文章详细介绍说,如果您尝试使用超过46mb的内存,您的应用程序将冻结,然后在5-10秒钟后被操作系统杀死。

因此,安全起见,最好保持在15-20个线程左右,但这当然取决于每个线程在执行操作时消耗的内存量以及线程完成的速度。内存在线程结束时被释放。


那应该是一个“微”符号,而不是m。启动线程不需要90毫秒! - Adam
已经修复了从毫秒到微秒的问题。 - Chris S

3

很抱歉我无法为您提供相关文档。但是需要注意的是,iPhone是一种资源受限设备,因此您可能希望在生成新线程时保持相当谨慎。我个人建议不要超过几个线程。但我很想知道实际限制是什么。


感谢您的评论。如果我从可靠来源(苹果?)之外找到任何实质性的建议,我会尝试将其发布回来。 - Kevin Rood

1
这是我的经验: 我的应用程序创建了40个并发的nsoperations,顺便说一下,在执行时最大的活动字节数只有约8 mb...我认为这真的取决于您如何有效地实现线程以及它们在执行时消耗多少内存,当然还有它们任务的复杂性...使用Instruments监视您的应用程序的分配和性能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接