Интерфейс передачи сообщений (MPI) (http://www-unix.mcs.anl.gov/mpi/) представляет собой масштабируемую и надежную библиотеку для параллельного программирования, ориентированную по оригиналу в сторону C, но теперь имеющуюся в нескольких вариантах http://en.wikipedia.org/wiki/Message_Passing_Interface#Implementations. Хотя библиотека не вводит новый синтаксис, она обеспечивает протокол связи для организации совместного использования данных между процедурами, которые являются параллелизуемыми.
Традиционно он используется в больших кластерных вычислениях, а не в единой системе для параллелизма, хотя многоядерные системы могут, безусловно, воспользоваться этой библиотекой.
Другим интересным решением проблемы параллельного программирования является OpenMP, который является попыткой предоставить переносимое расширение на разных платформах, чтобы дать подсказки компилятору о том, какие разделы кода легко распараллеливаются.
Например (http://en.wikipedia.org/wiki/OpenMP#Work-sharing_constructs):
#define N 100000
int main(int argc, char *argv[])
{
int i, a[N];
#pragma omp parallel for
for (i=0;i<N;i++)
a[i]= 2*i;
return 0;
}
Есть свои преимущества и недостатки обоих, конечно, но бывший, оказалось чрезвычайно успешным в академических и других тяжелых научных вычислительных приложений. YMMV.
Основная трудность заключается в том, что, хотя вы можете получать сообщения, проходящие на других языках, чрезвычайно сложно имитировать использование Эрлангом огромного количества процессов. Нерестные процессы в Erlang аналогичны экземплярам объектов в Java или Python - вы об этом не думаете. Если вы сделаете это на уровне ОС, вы быстро исчерпаете ресурсы, а это значит, что это не просто передача сообщений, но объединение, которое должно быть обработано в архитектуре. В этом отношении Э. Эрланг - это немного сложный поступок. Конечно, не каждая проблема требует миллионов параллельных процессов. – zxq9 2014-10-01 10:52:56