瀏覽代碼

Add a mutex to `arena_free_all`

gingerBill 3 年之前
父節點
當前提交
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) {
+	if !arena.ignore_mutex {
+		sync.mutex_lock(mutex)
+	}
 	for arena.curr_block != nil {
 		free_block := arena.curr_block
 		arena.curr_block = free_block.prev
 		memory_dealloc(free_block)
 	}
 	arena.total_used = 0
+	if !arena.ignore_mutex {
+		sync.mutex_unlock(mutex)
+	}
 }
 
 arena_allocator :: proc(arena: ^Arena) -> mem.Allocator {