Correct did you mean logic and make thread-safe-er

This commit is contained in:
gingerBill
2021-08-27 11:18:38 +01:00
parent 53556d9bd2
commit 582559f7ac
5 changed files with 38 additions and 21 deletions

View File

@@ -57,8 +57,8 @@ struct MemoryBlock {
};
struct Arena {
MemoryBlock * curr_block;
isize minimum_block_size;
MemoryBlock *curr_block;
isize minimum_block_size;
bool use_local_mutex;
BlockingMutex local_mutex;
};
@@ -69,8 +69,14 @@ gb_global isize DEFAULT_PAGE_SIZE = 4096;
MemoryBlock *virtual_memory_alloc(isize size);
void virtual_memory_dealloc(MemoryBlock *block);
void *arena_alloc(Arena *arena, isize min_size, isize alignment);
void arena_free_all(Arena *arena);
void arena_init_local_mutex(Arena *arena) {
mutex_init(&arena->local_mutex);
arena->use_local_mutex = true;
}
isize arena_align_forward_offset(Arena *arena, isize alignment) {
isize alignment_offset = 0;
isize ptr = cast(isize)(arena->curr_block->base + arena->curr_block->used);
@@ -81,17 +87,9 @@ isize arena_align_forward_offset(Arena *arena, isize alignment) {
return alignment_offset;
}
void arena_init_local_mutex(Arena *arena) {
mutex_init(&arena->local_mutex);
arena->use_local_mutex = true;
}
void *arena_alloc(Arena *arena, isize min_size, isize alignment) {
GB_ASSERT(gb_is_power_of_two(alignment));
BlockingMutex *mutex = &global_memory_allocator_mutex;
if (arena->use_local_mutex) {
mutex = &arena->local_mutex;
@@ -289,6 +287,7 @@ GB_ALLOCATOR_PROC(arena_allocator_proc) {
}
break;
case gbAllocation_FreeAll:
GB_PANIC("use arena_free_all directly");
arena_free_all(arena);
break;
}