Какова связь между потоками и параллелизмом? - PullRequest
0 голосов
/ 15 октября 2019

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

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Потоки являются одним из способов достижения параллелизма. Параллельность может быть достигнута на многих уровнях и разными способами. Вот некоторые из них от низкого до высокого уровня, чтобы дать вам общее представление:

  • конвейеры ЦП: на аппаратном уровне несколько инструкций выполняются параллельно (каждая инструкция находится на своем этапе вконвейер)
  • Дублирование процессорных блоков ALU и FPU. В процессоре имеется больше арифметико-логических модулей и модулей с плавающей запятой, которые могут выполнять команды параллельно.
  • векторизованные инструкции. Инструкции, которые выполняются для нескольких данных.
  • Гиперпоточность / SMT. Дублирование контекста процесса.
  • потоков. Потоки инструкций, которые могут выполняться параллельно.
  • процессы. Вы запускаете браузер и текстовый процессор в своей системе.
  • задачи. Более высокая абстракция над потоками и асинхронной работой.
  • несколько компьютеров. Запустите вашу программу на нескольких компьютерах
0 голосов
/ 16 октября 2019

Я новичок здесь, но я не совсем понимаю отрицательные голоса? Может ли кто-нибудь объяснить мне это? Это просто потому, что на этот вопрос (вероятно) был дан ответ, или потому что он считается очевидным?

Теперь, когда это не так ...

Ничего не выполняется на процессоре от "процесса" или чего-либо еще. Это все потоки, запланированные и полностью управляемые ядром с использованием различных алгоритмов для достижения ожидаемой производительности для любого конкретного приложения. Процессор допускает только n потоков, где n равно (core * hyperthreads). В большинстве случаев Hyperthreads будет 2, поэтому вы должны удвоить количество ядер, чтобы получить логическое количество процессоров. На самом деле это означает, что вместо 4 (например) потоков, запускаемых одновременно, он может поддерживать до 8. Теперь ОС может иметь сотни потоков в любой момент времени, как это возможно? Ну, ядро ​​использует множество проверок, таких как, как часто и долго спит поток, чтобы назначить ему приоритет. Всякий раз, когда ЦП запускает прерывание таймера, ОС соответствующим образом заменяет потоки, если они достигли выделенного им временного интервала на основании определения ОС своего приоритета.

...