Параллельный (происходит или существует одновременно) подразумевает, что другой код МОЖЕТ выполняться в одном и том же цикле. Это означает, что возможно может происходить параллельно, если доступно несколько процессоров или процессор с несколькими ядрами, и программа создана правильно. Простое добавление потоков не означает одновременного выполнения.
Причина, по которой я говорю МОЖЕТ и , возможно , заключается в том, что в любое время отдельным потокам программ необходимо совместно использовать энергозависимое / изменяемое состояние, другие потоки, которым необходим доступ к этому состоянию, не могут продолжать выполнение и придется ждать своей очереди, чтобы получить доступ к этому состоянию, и все снова начнет происходить последовательно.
Как правило, это реализуется в одной программе как более одного потока, выполняющего код одновременно в одном и том же точном цикле с другим потоком, учитывая, что нет конфликтов ресурсов, как указано выше. Это требует нескольких физических процессоров или ядер. Другие модели запускают несколько тяжеловесных процессов ОС, которые могут выполняться одновременно.
Параллельное программирование очень сложно сделать корректно с изменяемым общим состоянием.
Вы можете написать параллельную программу
который запускается серийно на одном
основной процессор, но масштабируется до
выполнять больше вещей одновременно
когда больше процессоров или ядер, или даже
несколько процессоров с несколькими
ядер присутствует.
Вы также можете заставить однопоточные программы появляться одновременно в многоядерной / многопроцессорной системе, если они могут одновременно работать с независимыми диапазонами входных данных. Пример: однопоточная программа 3D-рендеринга может на двухъядерной машине запускать 2 отдельных экземпляра: первый рендеринг всех нечетных кадров, а второй рендеринг всех четных кадров. Пока они не пытаются использовать какие-либо изменяемые ресурсы.
Многоядерный означает, что один ЦП имеет несколько процессорных ядер, которые могут выполнять потоки или процессы одновременно, и обычно отображаются в виде нескольких процессоров для основных операционных систем.
Это НЕ подразумевает, что программы, которые являются однопоточными, получают любое поведение параллелизма или выгоды от дополнительных доступных процессорных ядер.