Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Erlang-параллелизм стиля для других языков
Какие библиотеки существуют для других языков программирования, чтобы обеспечить модель параллелизма в стиле Erlang (процессы, почтовые ящики, сопоставление шаблонов) и т. д.)?
Примечание: меня особенно интересуют вещи, которые должны быть похожи на Erlang, а не просто любая библиотека потоков или очередей.
У Ульфа Вигера недавно был отличный пост на эту тему - вот свойства, которые он определяет как обязательные, прежде чем вы можете назвать что-то " Erlang Style Concurrency":
- Быстрое создание/разрушение процесса
- Возможность поддержки > > 10 000 параллельных процессов с практически неизменными характеристиками.
- Быстрая асинхронная передача сообщений.
- Копирование семантики передачи сообщений (параллелизм share-nothing).
- Мониторинг процессов.
- Выборочный прием сообщений.
Номер 2 выше является самым сложным для поддержки в VMs и языковых реализациях, которые изначально не были предназначены для параллелизма. Это не должно сбивать реализации параллелизма Erlang-ish в других языках, но большая часть значения Erlang исходит из возможности создавать миллионы процессов, что довольно чертовски трудно, если абстракция процесса имеет отношение 1-1 с потоком или процессом уровня OS. Ульф имеет гораздо больше об этом в ссылке выше.
Интерфейс передачи сообщений (MPI) (http://www-unix.mcs.anl.gov/mpi/) - это сильно масштабируемая и надежная библиотека для параллельного программирования, ориентированная первоначально на C, но теперь доступная в нескольких вариантах реализации http://en.wikipedia.org/wiki/Message_Passing_Interface#. Хотя библиотека не вводит новый синтаксис,она предоставляет коммуникационный протокол для организации совместного использования данных между подпрограммами, которые могут быть распараллелены.
Традиционно он используется в больших кластерных вычислениях, а не в одной системе для параллелизма, хотя многоядерные системы, безусловно, могут воспользоваться преимуществами этой библиотеки.
Другим интересным решением проблемы параллельного программирования является 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.
Microsoft Concurrency and Coordination Runtime for .NET.
CCR является подходящим для модель приложения, которая разделяет компоненты в части, которые могут общаться только через сообщения. Компоненты в этой модели нуждаются в средствах для координируйте между сообщениями, общайтесь с сложные сценарии отказов, а также эффективно бороться с асинхронностью программирование.
Если вы используете Ruby, взгляните на Revactor: [ http://revactor.org/][1]
Revactor актер реализация модели для Ruby 1.9 построен на вершине библиотеки событие, высоких оборотов производительность. Revactor в первую очередь предназначен для написания Erlang-подобных сетевых сервисов и инструментов.
Взгляните на этот пример кода:
myactor = Actor.spawn do
Actor.receive do |filter|
filter.when(:dog) { puts "I got a dog!" }
end
end
Revactor работает только на Ruby 1.9. Я считаю, что автор библиотеки прекратил ее поддерживать, но документация на их сайте очень хорошая.
Возможно, вы также захотите взглянуть на Reia: ruby-подобный скриптовый язык, построенный поверх Erlang VM. Reia - это новый проект создателя Revactor: Tony Arcieri.
Предупреждение: промоушен!
Я разработал библиотеку для передачи такого рода сообщений в Haskell году: Erlang-стиль распределен Haskell .
Волкер
Акка (http://akka.io ) находится под сильным влиянием эрлангов OTP. Он построен на актерах scala и отлично подходит для параллелизма на JVM.