Когда я сделаю плагин C для erlang, он будет использовать все преимущества системы порождения?Это блокирует? - PullRequest
3 голосов
/ 15 декабря 2010

Например, у меня есть программа, которая потребляет много ресурсов процессора.Я делаю плагин C, который может взаимодействовать с Erlang.Я породил 16 потоков с SMP +16.Даст ли мне аналогичную производительность по сравнению с чем-то вроде pthreads на многоядерном компьютере?Темы не должны общаться друг с другом.

1 Ответ

3 голосов
/ 16 декабря 2010

«Плагин C» четко не определен в контексте erlang.

Либо вы пишете порт, который в основном разветвляет системный процесс.

Или вы пишете связанный драйвер, которыйработает в том же контексте, что и Erlang vm.

В обоих случаях вы можете использовать преимущества многоядерных процессоров.В первом случае просто используется ОС для размещения процессов ОС на разных процессорах (на что должна быть способна любая приличная ОС SMP).

Во втором случае я не уверен, но я ожидаю, что драйверыработать на разных ядрах процессора также.Если у вас нет веских оснований для использования связанных драйверов и вы точно знаете, что делаете, я рекомендую использовать их по причинам сложности и стабильности.В случае сбоя порта Erlang получает уведомление и может перезапустить его или принять другие меры предосторожности.В случае сбоя драйвера весь Erlang vm сильно удаляется.

Главный вопрос - какую часть проблемы вы хотите решить в Erlang, если вы используете erlang только для запуска своих «плагинов», это может быть оченьпроще решить проблему, просто запустив процессы из оболочки, поскольку вашим «потокам» не нужно обмениваться данными, почему бы не передать параметры командной строки и обработать рабочие процессы из сценария оболочки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...