2010-04-28 3 views
1

싱글 톤 클래스가 있고이를 라이브러리 정적 (lib) 또는 동적 (dll)으로 컴파일합니다.싱글 톤 라이브러리에 대한 호출

기계의 동일한 파일에 대한 호출이 항상 두 경우 모두 동일하고 고유 한 인스턴스를 참조하도록 보장됩니까?

편집 : 프로세스가 두 개의 다른 라이브러리를로드하고이 라이브러리의 다른 함수가 싱글 톤 클래스의 인스턴스를 사용하려고한다면 어떻게 될까요? 이제 그들은 같은 인스턴스에 액세스하고 있습니다. 맞습니까?

감사합니다.

+0

OS 레벨에서 무언가를 잠글 필요가있는 프로세스 경계 외부에 "시스템 싱글 톤"을 원한다면 싱글 톤을 구현하는 방법에 따라 다릅니다. (windows) 커널 객체 네임 스페이스에서 명명 된 뮤텍스를 사용합니다. –

+0

편집에 대한 응답으로 내 답변을 수정했습니다. – Stephen

답변

5

아니요, 서로 다른 프로세스는 공통 라이브러리의 싱글 톤을 공유하지 않습니다. 서로 다른 프로세스는 서로 다른 메모리 공간을 사용하기 때문에 각 프로세스는 자체 싱글 톤을 인스턴스화합니다.

프로세스간에 데이터를 공유하려면 일종의 공유 메모리 또는 프로세스 간 통신을 사용해야합니다.

단일 프로세스이 라이브러리 A와 B를로드하고 두 라이브러리가 모두 라이브러리 C의 싱글 톤을 사용하는 경우 동일한 인스턴스를 사용하게됩니다.

2

파일을 호출하지 않습니다. 파일에서 프로세스로 코드를로드하면 코드에는 사용자의 싱글 톤을 구성하는 초기화 지침이 포함됩니다. 따라서 싱글 톤은 프로세스 내의 다른 코드가 사용하는 것과 관계없이 프로세스 내에서 고유합니다. 싱글 톤은 이 아닌이 프로세스간에 고유합니다 (동일한 공유 라이브러리를 사용하더라도).