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