2016-09-20 7 views
2

동일한 주소 공간에 공유 라이브러리의 복사본을 여러 개로드 할 수 있기를 원합니다. 나는 그들에게 어떤 전역 변수도 공유하지 않기를 바란다. 그리고 나는 두 복사본이 서로가로드되었음을 알지 못하게하고 싶다.공유 라이브러리의 여러 복사본로드 중

유스 케이스는 스레드가 안전하지 않은 라이브러리의 병렬 실행입니다.

어떻게 리눅스에서이

  • 을 할 수 있습니까?
  • OS X? Windows에서
  • ?
  • * BSD?
  • 다른 유닉스 계열 시스템에 있습니까?

답변

2

유스 케이스는 스레드 안전하지 않은 라이브러리의 병렬 실행입니다. 당신이 (어려운)은 "전역 변수를 공유하지"목표는에서 스레드 안전 루틴으로 호출 될 수 있기 때문에, 라이브러리 여전히이 작동하지 않을 수 있습니다를 달성하기 위해 관리하는 경우에도

다른 라이브러리.

명백한 경우 라이브러리가 strtok을 호출하는 경우입니다.

Linux 및 Solaris의 경우 dlmopen(LM_ID_NEWLM, ...)을 사용할 수 있습니다. Man page.