2011-05-05 6 views
1

공유 C lib를 사용하는 다중 스레드 JAVA 응용 프로그램이 있습니다. 다른 스레드에서이 라이브러리에 액세스하면이 라이브러리는 어떻게됩니까?JNI & Multi Threads

덕분에, 나훔

답변

1

이 절대적으로 C 라이브러리에 따라 달라집니다. 함수가 상태를 저장하지 않으면 (예 : 일부 결과 만 계산하고 스택에서 로컬 변수 만 사용) 여러 스레드에서 안전하게 사용할 수 있습니다. 그렇지 않으면 상태가 각 스레드마다 별도로 저장되지 않도록주의해야합니다. malloc을 사용하고 추가 호출을위한 핸들을 반환함으로써 다음 호출은 malloced 메모리 블록의 상태를 재사용 할 수 있습니다.

코드의 내부를 모르면 Runtime.exec을 사용하여 작은 C 응용 프로그램을 작성하고 호출하는 것이 더 좋지만 C 함수가 exec 오버 헤드를 정당화하기에 충분한 작업을 수행하는 경우에만 유용합니다.

+0

감사합니다 ................... – nmnir