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!
The maximum threads setting specifies the maximum number of simultaneous transactions that the Web Server can handle. The default value is greater of 128 or the number of processors in the system. Changes to this value can be used to throttle the server, minimizing latencies for the transactions that are performed.
These roles must have less than 100 members each, and only 10 roles can be mentioned per message. Threads also only allow 1,000 members to be added to them.
Each JVM server can have a maximum of 256 threads to run Java applications. In a CICS region you can have a maximum of 1024 threads. If you have many JVM servers running in the CICS region, you cannot set the maximum value for every JVM server.
unsigned int numThreads = std::thread::hardware_concurrency(); This returns the total number of supported concurrency. Hence, if we have 2 CPUs each of which can support 12 threads, numThreads will be equal to 24.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With