|
하나의 프로세스에는 같은 DLL 이 하나만 매핑되게 되어있습니다.
이유는 금방 아실것 같은데..
간단히 설명드리자면 만약 100K 짜리 DLL 이 있고 이 DLL 을 10 번 로드 했다치면
1메가를 사용하게 되는거죠 -_-;;
같은 내용인데 또다시 메모리에 올린다는게 비효율적인 작업이란겁니다...
그래서 동적으로 프로세스내부에 붙었다 없어졌다 하는 DLL 이란게 등장한 거구요..
그런데 어쩌다가 쓰레드당 DLL 이 필요하게 된거죠?
혹시 하고자 하는 작업을 말씀해 주시면..
허접하나마 조언을 드릴수 있습니다.
그럼 좋은 하루 되세요..
양동선 님이 쓰신 글 :
: 안녕하세요. 매번 이상한(?) 질문만 하게 되는군요. ^^
: 저도 고수님들 처럼 답변을 달아 보고 싶은데, 아직은 내공이
: 안되는군요. ^^
:
: 본격적으로 질문을 드리고 싶은게 있는데요.
:
: 첫째는요.
: 하나의 프로세서 내에서 동작하는 멀티스레드 환경에서 하나의 DLL을 마치
: 하나의 스레드당 하나의 DLL이 붙어서 동작하는것 처럼 구현 할 수 있냐는 거죠?
:
: 어떤분께서는 하나의 프로세서에 하나의 DLL만이 붙게 된다고 말씀하시더군요.
: 그러니깐 제가 생각하고 있는 하나의 프로세서에서 동작하는 멀티스레드에서는
: 하나의 스레드당 DLL을 붙게 하는건 말이 안된다고 하시더군요.
:
: 그래서 차선책으로 생각한게 프로세서를 하나 더 만드는 건데요.
: 그래도 자꾸 아쉬움이 남네요.
:
: Test를 해 봤는데, 역시 DLL이 각 스레드당 붙지 않는다는 결과를 얻게 됐구요.
:
: 참고로 저는 LoadLibrary라는 API 함수를 사용했습니다.
: 각 스레드가 호출 될때 가장 먼저 DLL을 LoadLibrary로 호출 했던거죠. ^^
:
: 어려운 질문이지만 답변 부탁 드립니다.
|