views:

451

answers:

2

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!

+3  A: 

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.

Mirko Froehlich
Thanks for your comments. If I find any solid recommendations from a reliable source outside Stack Overflow (Apple?), I'll try to post it back.
Kevin Rood
+4  A: 

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.

Chris S
Very nice details - thanks!
Kevin Rood
That should be a "micro" sign, not an m.it's not 90 MILLIseconds to start a thread!
Adam
Fixed it from MS to microseconds
Chris S