2009-09-19 66 views
10

在哪里可以找到有关iPhone应用程序允许的最大线程数的文档,以及您对线程性能有什么经验?最大线程限制?

谢谢!

回答

23

This page on the Mac Dev Center为您提供了线程分配成本,这可以使一个估计的猜测来自:iPhone上
创建时间

1KB内核成本
1MB的堆栈空间90微秒

该指南建议你会要求操作系统分配你的应用程序50MB的128MB的RAM如果你产生50线程:

此内存的空间预留 在你的进程空间中的线程 创建时间,但与记忆相关的实际网页 不 创建需要

这似乎是一个大的,直到他们金额 - 和this blog post进行了一些细节说,如果你想使用超过46MB的内存,你的应用程序将冻结,然后在操作系统5-10秒后被杀死。

所以真的15-20个线程是坚持的安全数量,但当然这取决于每个线程在执行的操作中占用多少内存,以及线程完成的速度。一旦线程结束,内存将被释放。

+0

非常好的细节 - 谢谢! – 2010-02-10 15:28:17

+0

这应该是一个“微”的标志,而不是米。 启动线程的时间不是90 MILLIseconds! – Adam 2010-07-09 12:50:45

+0

修正它从MS到微秒 – 2010-07-15 10:38:44

3

恐怕我不能指出你的任何相关文件。但是你需要记住,iPhone是一个资源受限的设备,所以你可能想要产生新线程非常保守。我会尽量不要自己去探讨一些线索。不过,我仍然很想听听实际的限制。

+0

感谢您的意见。如果我从堆栈溢出(Apple?)之外的可靠来源找到任何可靠的建议,我会尝试将其发回。 – 2009-09-21 23:35:31

1

这是我的经验: 我的应用程序创建了40个并发的nsoperations,顺便说一下,在执行时最大活动字节数仅为8 MB ......我认为这取决于您实现线程的效率以及多少它们在执行时消耗内存,并且因为它们任务的复杂性...使用工具来监视应用程序的分配和性能。