Максимальный предел потока?

Где я могу найти документацию по максимальному количеству потоков, разрешенных в приложении iPhone, и каковы ваши впечатления о производительности потоков?

Спасибо!

Ответ 1

Эта страница в Центре Mac Dev дает вам затраты на распределение потоков, которые вы можете сделать из предполагаемого предположения:

Стоимость ядра 1kb
1 бит стека пространства на iPhone
Время создания 90 микросекунд

В руководстве говорится, что вы попросите ОС выделить ваше приложение 50 МБ 128 МБ оперативной памяти, если вы создаете 50 потоков:

Пространство для этой памяти отложено в вашем пространстве процесса в потоке время создания, но фактические страницы связанные с этой памятью не созданные до тех пор, пока они не понадобятся

Это похоже на большую сумму - и в этом сообщении в блоге подробно говорится о том, что если вы пытаетесь использовать более 46 мб ram ваше приложение замерзнет, ​​а затем будет убито через 5-10 секунд ОС.

Так что действительно 15-20 потоков - это безопасная сумма, но, конечно, это зависит от того, сколько памяти потребляет каждый поток в выполняемых ею операциях, а также как быстро завершается поток. Память освобождается после завершения потока.

Ответ 2

Боюсь, я не могу указать вам на какую-либо соответствующую документацию. Но вам нужно иметь в виду, что iPhone является устройством с ограниченными ресурсами, поэтому вы, вероятно, хотите довольно консервативно создавать новые потоки. Я бы постарался не перебирать несколько нитей. Тем не менее, мне было бы интересно узнать, каков фактический предел.

Ответ 3

Вот мой опыт: Мое приложение создало 40 одновременных nsoperations, кстати, максимальные байты в реальном времени составляли всего около 8 мб во время выполнения... Я думаю, что это действительно зависит от того, насколько эффективно вы реализуете свои потоки и насколько они потребляют память при исполнении, и, конечно, сложность их задачи... Используйте инструменты для мониторинга распределения приложений и производительности.