aneira segura de obter uma instância singleton de multithreads
Método
DataCenter* DataCenter::getInstance()
{
static DataCenter instance;
return &instance;
}
Method 2
DataCenter* DataCenter::getInstance()
{
if (!m_instanceFlag)
{
m_instance = new DataCenter();
m_instanceFlag = true;
}
return m_instance;
}
Estou trabalhando em uma programação multithread e o DataCenter será acessado por mais de um thread. Eu costumava ter o método 2 para obter a instância do DataCenter e funcionava bem. Mas observei que preciso impedir que a instância singleton seja chamada por vários threads.
Minha pergunta é primeiro, eu realmente preciso proteger a instância singleton? ou OS faz isso por mim? A segunda questão é: o primeiro método é o caminho certo para obter a instância singleton?
Desde já, obrigado..