вторник, 20 ноября 2012 г.

Многопоточных приложений требуются ресурсы


Есть несколько очень полезных преимуществ потоков, мы можем иметь несколько процессов, запущенных одновременно, и несколько потоков, запущенных в рамках этих процессов. Так, со всеми этими преимуществами, почему бы нам не просто использовать новые темы для всех наших методов? Разве это не просто сделать все быстро бегать? Не совсем так. В самом деле, мы увидим в этом разделе, как раз наоборот может случиться, если мы чрезмерного потоков.

Многопоточных приложений требуются ресурсы. Темы требуют памяти для хранения локальной памяти потока контейнеров. Как вы можете себе представить, число потоков,
используемых ограничен объем доступной памяти. Память является довольно недорогой в эти дни многие компьютеры имеют большой объем памяти. Однако, вы не должны считать, что это так. Если вы используете приложения на неизвестном аппаратной конфигурации, вы не можете считать, что ваше приложение будет иметь достаточно памяти. Кроме того, вы не можете считать, что ваш процесс будет только один нерест темы и потребление системных ресурсов. Просто потому, что машина имеет много памяти, не означает, что это все для вашего приложения.

Вы также обнаружите, что каждый поток также берет на себя дополнительную нагрузку процессора. Создание слишком большого количества потоков в приложениях будет ограничивать количество времени, что ваш поток должен выполнить. Таким образом, ваш процессор потенциально могли бы проводить больше времени переключение между потоками, в отличие от фактического выполнения инструкций, которые содержат темы. Если ваше приложение создает несколько потоков, приложение будет получать больше времени, чем выполнение всех других процессов с меньшим количеством потоков.

Для того, чтобы это понятие было проще понять, принять параллельный пример вы найдете вниз в местном продуктовом магазине. Два кассиры сканирования продукты для своих клиентов. Тем не менее, существует только один упаковщик, который берет оказывается переключения между двумя кассирами. Bagger весьма эффективным при прыжках назад и вперед между двумя регистрами и расфасовке продуктов, потому что они не накапливаются быстрее, чем Bagger можете мешок бакалеи. Однако, если еще два кассира открыть полос, станет очевидным, что упаковщик будет тратить больше времени прыгать туда и обратно между регистрами, чем они тратят на самом деле мешки бакалеи. В конце концов, в магазине нужно будет получить еще один упаковщик. В случае потоков, думать о кассиров, приложения - или нитей, и упаковщик, как процессор. Процессор имеет для переключения между потоками. В качестве "нити" увеличение продуктового магазина, чтобы добавить еще один "процессор", чтобы быть уверенным, что клиенты получают должного внимания.

Фраза "слишком много потоков" является довольно общим термином - и это правильно. Что представляет собой "слишком много" на одной системе может быть штраф на другой. С аппаратной конфигурации в значительной степени определяют количество потоков, доступных в системе, "слишком много" это не поддается исчислению переменной без конкретных деталей конфигурации и много испытаний.

Именно по этим причинам, Microsoft рекомендует использовать в несколько потоков, как возможно в ваших приложениях. Это ограничивает объем ресурсов, необходимых для операционной системы.

Комментариев нет:

Отправить комментарий