3700 FPS here we go

This commit is contained in:
Dynamitos
2021-04-25 23:43:40 +02:00
parent 312ae2af9a
commit 4a078bd24c
35 changed files with 160 additions and 73 deletions
+8 -4
View File
@@ -37,7 +37,6 @@ public:
RefObject(T *ptr)
: handle(ptr), refCount(1)
{
std::scoped_lock lock(registeredObjectsLock);
registeredObjects[ptr] = this;
}
inline RefObject(const RefObject &rhs)
@@ -54,7 +53,9 @@ public:
std::scoped_lock lock(registeredObjectsLock);
registeredObjects.erase(handle);
}
#pragma warning( disable: 4150)
delete handle;
#pragma warning( default: 4150)
}
RefObject &operator=(const RefObject &rhs)
{
@@ -126,13 +127,16 @@ public:
{
std::unique_lock l(registeredObjectsLock);
auto registeredObj = registeredObjects.find(ptr);
l.unlock();
if (registeredObj == registeredObjects.end())
// get here for thread safetly
auto registeredEnd = registeredObjects.end();
if (registeredObj == registeredEnd)
{
object = new RefObject<T>(ptr);
l.unlock();
}
else
{
{
l.unlock();
object = (RefObject<T> *)registeredObj->value;
object->addRef();
}