Где я могу найти документацию по максимальному количеству потоков, разрешенных в приложении iPhone, и каковы ваши впечатления о производительности потоков?
Спасибо!
Где я могу найти документацию по максимальному количеству потоков, разрешенных в приложении iPhone, и каковы ваши впечатления о производительности потоков?
Спасибо!
Эта страница в Центре Mac Dev дает вам затраты на распределение потоков, которые вы можете сделать из предполагаемого предположения:
Стоимость ядра 1kb
1 бит стека пространства на iPhone
Время создания 90 микросекунд
В руководстве говорится, что вы попросите ОС выделить ваше приложение 50 МБ 128 МБ оперативной памяти, если вы создаете 50 потоков:
Пространство для этой памяти отложено в вашем пространстве процесса в потоке время создания, но фактические страницы связанные с этой памятью не созданные до тех пор, пока они не понадобятся
Это похоже на большую сумму - и в этом сообщении в блоге подробно говорится о том, что если вы пытаетесь использовать более 46 мб ram ваше приложение замерзнет, а затем будет убито через 5-10 секунд ОС.
Так что действительно 15-20 потоков - это безопасная сумма, но, конечно, это зависит от того, сколько памяти потребляет каждый поток в выполняемых ею операциях, а также как быстро завершается поток. Память освобождается после завершения потока.
Боюсь, я не могу указать вам на какую-либо соответствующую документацию. Но вам нужно иметь в виду, что iPhone является устройством с ограниченными ресурсами, поэтому вы, вероятно, хотите довольно консервативно создавать новые потоки. Я бы постарался не перебирать несколько нитей. Тем не менее, мне было бы интересно узнать, каков фактический предел.
Вот мой опыт: Мое приложение создало 40 одновременных nsoperations, кстати, максимальные байты в реальном времени составляли всего около 8 мб во время выполнения... Я думаю, что это действительно зависит от того, насколько эффективно вы реализуете свои потоки и насколько они потребляют память при исполнении, и, конечно, сложность их задачи... Используйте инструменты для мониторинга распределения приложений и производительности.