Where can I find documentation on the maximum number of threads allowed in an iPhone application, and what are your experiences with thread performance?
Thank you!
Where can I find documentation on the maximum number of threads allowed in an iPhone application, and what are your experiences with thread performance?
Thank you!
I'm afraid I can't point you to any relevant documentation. But you need to keep in mind that the iPhone is a resource constrained device, so you probably want to pretty conservative with spawning new threads. I would try not to go over a handful of threads myself. Still, I'd be curious to hear what the actual limit is.
This page on the Mac Dev Center gives you thread allocation costs, which you can make an estimated guess from:
1kb kernel cost
1mb stack space on iPhone
Creation time 90 microseconds
The guide suggests you will be asking the OS to allocate your app 50mb of 128mb of ram if you spawn 50 threads:
The space for this memory is set aside in your process space at thread creation time, but the actual pages associated with that memory are not created until they are needed
That seems like a large amount - and this blog post goes in some detail in saying that if you're trying to use over 46mb of ram your app will freeze, and then be killed 5-10 seconds later by the OS.
So really 15-20 threads is a safe amount to stick to, but of course that depends on how much memory each thread is consuming in the operations it performs, and also how fast the thread completes. The memory is deallocated once the thread finishes.