Говоря о синглетонах и проблемах безопасности потоков, связанных с условиями гонки при создании экземпляра синглтона, о каком потоке мы говорим?
Используя это в качестве примера, предположим, что у меня есть MyApp, который использует Singleton
class MyApp
{
MySingleton oneAndOnly;
int main() // application entry point
{
oneAndOnly = MySingleton::GetInstance();
}
void SpawnThreads()
{
for(int i = 0; i < 100; i++)
{
Thread spawn = new Thread(new ThreadStart(JustDoIt));
spawn.Start();
}
}
void JustDoIt()
{
WaitRandomAmountOfTime(); // Wait to induce race condition (maybe?) for next line.
MySingleton localInstance = MySingleton::GetInstance();
localInstance.DoSomething();
}
}
Речь идет о:
- когда я открываю MyApp.exe один раз и
затем еще раз, пытаясь иметь
оба открылись?
- Или речь идет о потоках, созданных MyApp? Что делать, если MyApp делает
не порождает темы?