最大线程限制?

时间:2009-09-19 01:13:02

标签: iphone objective-c multithreading

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

谢谢!

3 个答案:

答案 0 :(得分:24)

This page on the Mac Dev Center为您提供线程分配成本,您可以通过以下方式进行估算:

  

1kb内核成本
  iPhone上的1mb堆栈空间   创建时间90微秒

指南建议你要求操作系统分配你的应用程序50mb的128mb ram如果你产生50个线程:

  

留出这个记忆的空间   在线程的进程空间中   创建时间,但实际页面   与那个记忆相关的不是   在需要之前创建

这似乎是一个很大的数量 - 而this blog post更详细地说,如果你试图使用超过46mb的ram,你的应用程序将会冻结,然后在5-10秒后被杀死OS。

所以15-20个线程确实是一个安全的数量,但当然这取决于每个线程在其执行的操作中消耗多少内存,以及线程完成的速度。线程完成后,内存将被释放。

答案 1 :(得分:3)

我担心我不能指出任何相关文件。但是你需要记住,iPhone是一个资源有限的设备,所以你可能想要产生新的线程相当保守。我会尽量不去看一些线程。不过,我很想知道实际的限制是什么。

答案 2 :(得分:1)

以下是我的经历: 我的应用程序创建了40个并发的nsoperations,顺便说一下,执行时最大活字节数大约是8 MB ...我认为这实际上取决于你实现线程的效率以及它们在执行时消耗多少内存以及当前复杂性他们的任务......使用Instruments监控应用程序的分配和性能。