Можем ли мы воспользоваться full преимуществом многоядерности без многопоточности?Определенно нет.Но у нас все еще может быть некоторый параллелизм.
Как уже было сказано, у нас может быть несколько независимых процессов, работающих на разных процессорах для улучшения глобальных компьютерных характеристик.
И параллельная обработка все еще возможна путемсредство межпроцессного взаимодействия ( IPC ) в виде каналов или разделяемой памяти.Например, если вы выполните
taskset 0x01 sort | taskset 0x02 uniq
, вы запустите два процесса, сортируете на ядре 0 и uniq на ядре 1, и эти процессы будут взаимодействовать по каналу (реализованному в общей памяти).Обратите внимание, что это всего лишь пример и что операционные системы запускают новые процессы на разных ядрах без директивы taskset.
С помощью IPIX с общей памятью posix вы можете выполнять параллельные процессы, работающие на разных ядрах и обменивающиесяданные в выделенной зоне памяти.
И вы можете использовать openMPI для запуска многопроцессорных параллельных программ на многоядерном компьютере.Совместно используемая память будет использоваться для реализации передачи сообщений MPI.
Но в любом случае, по сравнению с многопоточностью, нагрузка на программирование будет выше, а производительность намного ниже.