Proud::DllSingleton< T > Class Template Reference

Classes

class  Holder
 

Public Types

typedef RefCount< T > PtrType
 

Static Public Member Functions

static T & GetUnsafeRef ()
 
static PtrType GetSharedPtr ()
 

Detailed Description

template<typename T>
class Proud::DllSingleton< T >

CSingleton은 executable이나 static library에서는 안전하게 사용할 수 있습니다.

그러나 DLL에서는 CSingleton은 문제가 있습니다.

  1. DLL1에 싱글톤을 둡니다.
  2. DLL2는 DLL1의 싱글톤을 액세스합니다.
  3. 그러나 싱글톤은 실제로 두개가 존재해 버립니다.

이러한 문제를 없애려면 CSingleton대신에 DllSingleton을 사용하십시오.

사용법:

  1. 여러분의 헤더 파일에 DllSingleton<X>을 정의합니다.
  2. namespace Proud를 하나 만들고 그 안에 DECLARE_DLL_SINGLETON(X_API, X)를 추가합니다. X_API는 여러분의 DLL에 대한 dllexport, dllimport 매크로입니다.
  3. 여러분의 DLL의 소스 파일에 namespace Proud를 하나 만들고 그 안에 IMPLEMENT_DLL_SINGLETON(X)를 추가합니다. 싱글톤의 생성과 파괴순서를 정하고 싶으시면 이 매크로를 여러분의 1개의 소스파일에서만 사용하십시오.
// Your header file
class X: DllSingleton<X> {}
DECLARE_DLL_SINGLETON(MY_DLL_API, X);
// Your source file
IMPLEMENT_DLL_SINGLETON(X);