2011-11-21 2 views
2

나는 자바 스레드에서 dll에 상주하는 C 함수를 호출한다. 이 C 함수는 무한대로 실행되며 실시간으로 비디오 프레임을 처리하여 각 프레임에 대한 결과를 출력합니다.자바에서 글로벌 C 변수에 액세스

나는 기능을 중단하지 않고 처리 기능의 결과를 읽는 또 다른 자바 스레드를 생성하고 싶습니다. 또한 손상된 데이터 읽기를 막기 위해 일종의 스레드 제어를 구현해야합니다.

아이디어가 있으십니까?

+0

현재 C 함수를 어떻게 호출하고 있습니까? –

+0

잘 구현하지 못했습니다. C 함수가 준비되어 있고 JNI를 사용하여 호출하려고합니다. – kidhuvig

+0

Windows에 있습니까? DLL 관점에서 "전역"변수는 거의 전역 적으로 없기 때문에. 때로는 모든 사용자에게 공통적이지만 일반적으로 프로세스 별 또는 스레드 별로 제한됩니다. –

답변

0

C 함수를 Java 스레드가 시작할 실행 파일에 포함시킬 수 있습니다. C 함수는 결과를 파이프에 게시하거나 소켓을 통해 Java 스레드에 보낼 수 있습니다. 이렇게하면 하나의 시스템에서 C 기능을 실행하고 다른 시스템에서 Java 스레드를 실행하는 유연성을 얻을 수 있습니다.

1

글로벌은 C 환경에 의해 제어됩니다.

나는이 작업을 수행해야한다고 생각 :

  1. 글로벌 변수의 값을 반환하는 함수를 작성하고 JNI를 사용하여 자바에서 호출.
  2. C에서 동기화 작업을 구현하십시오.
+0

예, 해결책입니다, 감사합니다. – kidhuvig