Я недавно прочитал книгу о системном программном обеспечении. В этом есть пример, который я не понимаю.
volatile T* pInst = 0;
T* GetInstance()
{
if (pInst == NULL)
{
lock();
if (pInst == NULL)
pInst = new T;
unlock();
}
return pInst;
}
Почему автор проверяет (pInst == NULL)
дважды?