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