Интеграция Erlang с C++

Для Вашего второго редактирования проверьте CloudStatus. Это контролирует материал AWS и Google App Engine для отключений электричества и производительности. Amazon также отслеживает их отключения электричества в http://status.aws.amazon.com/ .

22
задан user855 28 November 2009 в 04:04
поделиться

4 ответа

  • Встроенные функции : доступны в последней версии Erlang / OTP, позволяют реализовать любые ваши функции в C.

  • Драйверы портов : вы можете связать код C с виртуальной машиной Erlang и получить к ней доступ с помощью команды port_command.

  • Узлы C: с библиотекой ei вы можете имитировать виртуальную машину и общаться со своими виртуальными машинами Erlang, используя формат распространения Erlang .

26
ответ дан 29 November 2019 в 05:21
поделиться

Самая близкая вещь, которую я знаю для прямого взаимодействия Erlang с C ++, - это EPAPI . Конечно, он полагается на испытанный C erl_interface , который входит в стандартную комплектацию дистрибутива Erlang.

3
ответ дан 29 November 2019 в 05:21
поделиться

К отличному ответу Зеда я бы добавил open_port () . Он позволяет запускать внешнюю программу и взаимодействовать с ней из Erlang, используя его стандартные входы и выходы. Вы можете использовать его как каналы Unix, указав параметр {line, L}, или есть также параметр {packet, N} с префиксом длины, который я считаю более безопасным и эффективным.

Преимущество этого перед NIF и драйверы порта заключается в том, что ваш код на Erlang полностью изолирован от кода C. Программа на C может разбить свой собственный стек, дважды освободить блоки памяти, войти в бесконечный цикл и т.д. Ничто из этого не останавливает ваш код Erlang. В худшем случае вы закроете порт Erlang и снова откроете его, если что-то пойдет не так.

0
ответ дан 29 November 2019 в 05:21
поделиться

Любой, кто интересуется аспектом интеграции erlang / C ++, может также захотеть ознакомиться с этой статьей: Переписывание Playdar: C ++ на Erlang, огромная экономия :

Я слышал много анекдотов и утверждений о сколько строк кода сохраняется, когда вы пишете на Erlang вместо [C ++ / другой язык]. Я рад сообщить, что теперь у меня есть личный опыт и некоторые данные, которыми я могу поделиться.

Я изначально написал Playdar на C ++ (с использованием библиотек Boost и Asio), начиная с февраля этого года. Мне посчастливилось работать с опытными разработчиками, которые помогли мне разобраться с C ++. Еще несколько месяцев назад трое из нас регулярно занимались этим, и, несмотря на то, что мы были относительно новичками в C ++, я скажу, что в итоге мы получили хорошо спроектированную и надежную кодовую базу, учитывая все обстоятельства.

0
ответ дан 29 November 2019 в 05:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: