mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-03 06:03:06 +00:00
try manually counting sharedptr
This commit is contained in:
parent
8a222430a6
commit
ab73d79e7d
@ -161,7 +161,7 @@ proc put*(
|
||||
echoed "put request args: ", $getThreadId()
|
||||
|
||||
var putRes = newFuture[?!void]("threadbackend.put(tds, key, data)")
|
||||
let sigFut = SharedSignal.new()
|
||||
let sigFut = SharedSignal.new(2)
|
||||
|
||||
sigFut.
|
||||
then(proc (sig: SharedSignal) =
|
||||
@ -179,6 +179,7 @@ proc put*(
|
||||
|
||||
wait(sig).
|
||||
then(proc () =
|
||||
sig.decr()
|
||||
echo "\n"
|
||||
os.sleep(400)
|
||||
echoed "put request done "
|
||||
|
||||
@ -58,7 +58,7 @@ proc newThreadResult*[T](
|
||||
{.error: "only thread safe types can be used".}
|
||||
|
||||
let res = newSharedPtr(ThreadResult[T])
|
||||
res[].sig = await SharedSignal.new()
|
||||
res[].sig = await SharedSignal.new(0)
|
||||
res
|
||||
|
||||
proc `=destroy`*[T](res: var ThreadResult[T]) {.raises: [].} =
|
||||
|
||||
@ -90,8 +90,9 @@ proc `=destroy`*[T](x: var SharedSignalObj) =
|
||||
release(x.sigptr)
|
||||
x.sigptr = nil
|
||||
|
||||
proc new*(tp: typedesc[SharedSignal]): Future[SharedSignal] {.async.} =
|
||||
result = newSharedPtr[SharedSignalObj](SharedSignalObj)
|
||||
proc new*(tp: typedesc[SharedSignal],
|
||||
count: int): Future[SharedSignal] {.async.} =
|
||||
result = newSharedPtr[SharedSignalObj](SharedSignalObj, manualCount = count)
|
||||
result[].sigptr = await getThreadSignal()
|
||||
|
||||
proc wait*(sig: SharedSignal): Future[void] =
|
||||
@ -99,3 +100,4 @@ proc wait*(sig: SharedSignal): Future[void] =
|
||||
|
||||
proc fireSync*(sig: SharedSignal): Result[bool, string] =
|
||||
sig[].sigptr.fireSync()
|
||||
|
||||
|
||||
@ -122,5 +122,6 @@ suite "Share buffer test":
|
||||
check intref[] == 40
|
||||
b.release()
|
||||
check intref[] == 0
|
||||
|
||||
|
||||
# TODO: add async test
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user