[win32/c++] pattern singleton et double check
bonsoir, petite question qui me taraude l'esprit, est ce qu'on ne pourrait pas résoudre le problème du double check de (http://come-david.developpez.com/tut...page=Singleton) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
template <class T> T* Singleton<T>::Get()
{
if(m_i==0) //Premier check
{
Lock lock
if(m_i==0) //Second
{
m_i=new T();
}
}
return m_i;
} |
avec :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| template <class T> T* Singleton<T>::Get()
{
if(m_i==0) //Premier check
{
Lock lock
if(m_i==0) //Second
{
InterlockedExchangePointer(&m_i, new T());
}
}
return m_i;
} |
bien sur uniquement sous windows, mais bon je me pose la question.