Просмотр исходного кода

Add a mutex to `arena_free_all`

gingerBill 4 лет назад
Родитель
Сommit
b2a36f204e
1 измененных файлов с 6 добавлено и 0 удалено
  1. 6 0
      core/mem/virtual/arena.odin

+ 6 - 0
core/mem/virtual/arena.odin

@@ -70,12 +70,18 @@ arena_alloc :: proc(arena: ^Arena, min_size: int, alignment: int) -> (data: []by
 }
 }
 
 
 arena_free_all :: proc(arena: ^Arena) {
 arena_free_all :: proc(arena: ^Arena) {
+	if !arena.ignore_mutex {
+		sync.mutex_lock(mutex)
+	}
 	for arena.curr_block != nil {
 	for arena.curr_block != nil {
 		free_block := arena.curr_block
 		free_block := arena.curr_block
 		arena.curr_block = free_block.prev
 		arena.curr_block = free_block.prev
 		memory_dealloc(free_block)
 		memory_dealloc(free_block)
 	}
 	}
 	arena.total_used = 0
 	arena.total_used = 0
+	if !arena.ignore_mutex {
+		sync.mutex_unlock(mutex)
+	}
 }
 }
 
 
 arena_allocator :: proc(arena: ^Arena) -> mem.Allocator {
 arena_allocator :: proc(arena: ^Arena) -> mem.Allocator {