#include #include #include #include #include #include #include namespace { using namespace testing; TEST(ResourceResourceSystem, scenemanager_getinstance_should_be_thread_safe) { const VFS::Manager vfsManager; const ToUTF8::Utf8Encoder encoder(ToUTF8::WINDOWS_1252); Resource::ResourceSystem resourceSystem(&vfsManager, 1.0, &encoder.getStatelessEncoder()); Resource::SceneManager* sceneManager = resourceSystem.getSceneManager(); constexpr VFS::Path::NormalizedView noSuchPath("meshes/whatever.nif"); std::vector threads; for (int i = 0; i < 50; ++i) { threads.emplace_back([=]() { sceneManager->getInstance(noSuchPath); }); } for (std::thread& thread : threads) thread.join(); } }