2014-10-08 2 views
0

C로 작성된 진행중인 프로젝트의 구현을 확장하여 이미 잘 작동하고있어 멀티 스레드가 가능하도록했습니다.멀티 스레딩 구현 - java와 C 사이의 단점과 단점

나는 자바와 다년간의 경험을 가지고 있지만 C의 매우 제한된 그래서 기본적으로 나는 다음과 같은 몇 가지 옵션이 있습니다

  1. 재 작성을 자바 코드의 모든 나중에 자바 멀티 스레딩을 구현
  2. 가 JNI를 통해 C 라이브러리에서 몇 가지 방법을 호출하여 자바 멀티 스레딩을 구현
  3. 은 C를 배우고 고려하여

C.에서 작업을 계속 멀티 THR 그 eaded 버전은 C 라이브러리에서 최신 업데이트를 얻을 필요가 없으며 아마도 나중에이 코드를 Hadoop과 같은 큰 데이터 프레임 워크에 넣어야 할 수도 있습니다.

나를 위해 어떤 옵션이 더 좋을 수 있는지 알아 보려면 이전에 경험 한 것을 토대로 다음 질문에 대한 의견이 필요합니다.

  • Java에서 C 함수를 호출하는 것이 얼마나 부드럽고 큰 제한이있는 경우?
  • C에서 멀티 스레딩을 구현하는 것이 장단점은 무엇입니까?

그리고 어떤 옵션이 더 좋다고 생각하십니까?

+1

나는'2'로 갈 것입니다. –

+1

나는 1 명으로 갈 것입니다. 3 명에도 투표하는 사람들이있을 것이라고 확신합니다. 그러나 우리는 어느 것이 더 나은 선택인지 말할 수 없습니다. –

+1

현재의 C 코드는 스레드로부터 안전하지 않을 수도 있으므로 옵션 2는 JNI 인터페이스를 만드는 것보다 더 많은 작업이 될 수 있습니다. –

답변

2

멀티 스레딩은 POSIX 표준에서 뮤텍스 및 세마포어에 대한 몇 가지 기본 개념을 사용하므로 필자는이를 배우는 것이 좋습니다. C 개념은 정말 기본적인 것입니다. 배워야 할 가장 어려운 것은 포인터 일 뿐이므로 아무 것도 열심히 쓰지 않을 것입니다. Java와 CI에서 멀티 스레드 프로젝트를 코딩하면 C (POSIX 표준의 중요한 부분을 배울 수있는 하드 자바 배경을 가졌다 고합니다!)는 extern 라이브러리 및 가상 라이브러리에 의존하지 않고 기계. Java로하고 싶다면 솔루션 2를 제외하고 독립 실행 형 Java 프로젝트를 만들고 멀티 스레딩을 지원하는 적절한 라이브러리가 필요합니다.