mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 21:27:45 +00:00
AK+LibCore: Add an IDAllocator and use to allocate timer ids
This commit is contained in:
parent
d5fea1b235
commit
861f40f014
3 changed files with 43 additions and 9 deletions
37
AK/IDAllocator.h
Normal file
37
AK/IDAllocator.h
Normal 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;
|
Loading…
Add table
Add a link
Reference in a new issue