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 type
JobId* = uint ## job id, should match `future.id()`
JobQueue*[T] = ref object JobQueue*[T] = ref object
## job queue object ## job queue object

View File

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

View File

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