Как я могу узнать максимальное количество потоков, которые я могу использовать? Я новичок в программировании, поэтому я пытаюсь понять, что мне нужно знать. У меня есть 950 ГБ файлов для загрузки с Amazon S3. Я думал, что смогу использовать два потока, каждый из которых загружает половину этого количества, работая параллельно.

Я надеюсь ускорить массовую загрузку данных из Amazon S3 путем многопоточности моего приложения, но было бы хорошо сначала узнать, поддерживает ли мой компьютер даже многопоточность.

Спецификации компьютера:

  • Модель: MacBook (13 дюймов, середина 2010 года, A1342)
  • Процессор: 2,4 ГГц Intel Core Duo
  • Память: 8 ГБ, 1067 МГц, DDR3
  • Программное обеспечение: MacOS Sierra 10.12.6

Процессор очень старый и более не выпускается, поэтому он не поддерживает технологию Intel Hyperthreading. Я не уверен, хорошо ли это с многопоточностью. Но если он может поддерживать многопоточность, сколько потоков он может поддерживать и будет ли это влиять на производительность, если я использую слишком много потоков?

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

2 ответа2

2

В вашем вопросе есть несколько ложных предположений, поэтому позвольте мне уточнить здесь:

  1. Многопоточность возможна даже на одноядерных процессорах. Выполнение просто разделяется во времени, поэтому в любой момент времени у вас есть 1 активный поток, однако общее выполнение потоков выполняется параллельно.
  2. Многопоточность не эквивалентна ускорению. Если многопоточное приложение наивно разработано, оно всегда медленнее однопоточного приложения в десятки или даже сотни раз.
  3. Загрузка из внешних сетей в 99% случаев не зависит от многопоточности. Может быть, стоит взглянуть на многодиапазонную загрузку HTTP, как это было реализовано в приложениях, таких как NetAnts, ReGet и других, начиная с эпохи коммутируемых модемов. Однако нет гарантии, что многодиапазонная загрузка может быть быстрее, чем обычная, из-за различных сетевых политик и задействованных серверов.

Итак, в конце концов. Вы определенно должны собрать показатели в своем приложении: что такое медленная операция? И затем перепроектируйте это, чтобы получить больше скорости.

1

Как я могу узнать максимальное количество потоков, которые я могу использовать?

Intel Core Duo имеет 2 потока, потому что он имеет двухъядерный процессор с одним ядром. Каждое ядро имеет возможность одного потока.

Но если он может поддерживать многопоточность, сколько потоков он может поддерживать и будет ли это влиять на производительность, если я использую слишком много потоков?

Поддерживает 2 потока.

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

Он не способен обрабатывать более 2 потоков. Ваше многопоточное приложение будет иметь только два потока, так как вы можете создавать только два потока из-за аппаратного обеспечения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .