This commit is contained in:
Jaremy Creechley 2024-02-16 14:08:35 -07:00
parent 8becb6ab5b
commit 2ac09d1e2c
3 changed files with 11 additions and 3 deletions

View File

@ -21,7 +21,6 @@ logScope:
##
type
JobId* = uint ## job id, should match `future.id()`
JobQueue*[T] = ref object
## job queue object

View File

@ -1,6 +1,9 @@
import std/tables
import ./types
export types
type
MemHolder* = ref object of RootObj
@ -12,13 +15,17 @@ type
var memHolderTable = newTable[uint, seq[MemHolder]]()
proc retainMemory*[T: uint](id: T, mem: MemHolder) {.gcsafe, raises: [].} =
proc retainMemory*(id: JobId, mem: MemHolder) {.gcsafe, raises: [].} =
{.cast(gcsafe).}:
memHolderTable[].withValue(id, value):
value[].add(mem)
do:
memHolderTable[id] = @[mem]
proc releaseMemory*[T: uint](id: T) {.gcsafe, raises: [].} =
proc releaseMemory*(id: JobId) {.gcsafe, raises: [].} =
{.cast(gcsafe).}:
memHolderTable.del(id)
proc retainedMemoryCount*(): int {.gcsafe, raises: [].} =
{.cast(gcsafe).}:
memHolderTable.len()

View File

@ -2,3 +2,5 @@
type
ApatheiaException* = object of CatchableError
ApatheiaSignalErr* = object of ApatheiaException
JobId* = uint ## job id, should match `future.id()`