1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 19:57:44 +00:00

AK+LibCore: Add an IDAllocator and use to allocate timer ids

This commit is contained in:
Shannon Booth 2020-01-05 12:28:42 +13:00 committed by Andreas Kling
parent d5fea1b235
commit 861f40f014
3 changed files with 43 additions and 9 deletions

37
AK/IDAllocator.h Normal file
View file

@ -0,0 +1,37 @@
#pragma once
#include <stdlib.h>
#include <AK/HashTable.h>
namespace AK {
class IDAllocator {
public:
IDAllocator() {}
~IDAllocator() {}
int allocate()
{
int r = rand();
for (int i = 0; i < 100000; ++i) {
int allocated_id = r + i;
if (!m_allocated_ids.contains(allocated_id)) {
m_allocated_ids.set(allocated_id);
return allocated_id;
}
}
ASSERT_NOT_REACHED();
}
void deallocate(int id)
{
m_allocated_ids.remove(id);
}
private:
HashTable<int> m_allocated_ids;
};
}
using AK::IDAllocator;