Максимальный предел потока? - PullRequest
12 голосов
/ 19 сентября 2009

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

Спасибо!

Ответы [ 3 ]

24 голосов
/ 10 февраля 2010

На этой странице в Mac Dev Center приведены затраты на распределение потоков, из которых можно сделать приблизительную оценку:

Стоимость ядра 1 КБ
1 МБ стека на iPhone
Время создания 90 микросекунд

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

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

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

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

3 голосов
/ 19 сентября 2009

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

1 голос
/ 24 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...