2016-09-28 2 views
0

어떻게 Erlang에서 C 라이브러리를 병렬 방식으로 호출 할 수 있습니까?Erlang 및 C 라이브러리. 병렬 실행

나는 멀티 스레드 (내부 뮤텍스)를 지원하는 C 라이브러리를 가지고 있으며 진정한 병렬 방식으로 수천 개의 스레드에서이 라이브러리를 erlang에서 시작하려고한다. 내가 어떻게 해 ?

Erlang C 포트 드라이버 또는 C 노드 또는 NIF를 통해이를 수행 할 수 있습니까?

답변

0

C 라이브러리 호출과 어떤 라이브러리가 있습니까? 스레드 안전 라이브러리입니까? NIF에서 그냥 부르세요. 그렇지 않으면 mutex 또는 공유 잠금 상태로 평상시와 같이 액세스를 제한해야합니다. Erlang에는 마법의 총알이 없습니다. Erlang이 제공하는 것은 의미있는 방식으로 그것을 관리하기위한 도구입니다.

+0

내 C 라이브러리에서 threadsafe 함수를 호출하는 것을 의미합니다. NIF는 0.1ms의 시간 제한을 가지고 있으며 저에게는 적합하지 않습니다. –

+0

@EduardBondarenko : 그러면 더러운 스케줄러를 사용하거나 자신의 스레드를 만들 수 있습니다. 그러나 포트 사용은 성능 요구 사항이 강하고 직렬화 된 데이터를 보내고 내 보내지 않는 한 선호하는 방법입니다. –

+0

예, 성능상의 이유로 일반 포트를 사용할 수 없으므로 c 포트 드라이버를 사용하는 것을 고려합니다. C lib의 스레드로 작업해야합니까? Erlang 스레드를 사용할 방법이 없습니까? 고마워. –