mirror of
https://github.com/logos-storage/apatheia.git
synced 2026-01-04 05:53:11 +00:00
segfault
This commit is contained in:
parent
f554457c67
commit
e8a7972ed4
@ -19,12 +19,12 @@ type
|
|||||||
template toOpenArray*[T](arr: Seq[T]): auto =
|
template toOpenArray*[T](arr: Seq[T]): auto =
|
||||||
system.toOpenArray(arr.data, 0, arr.size)
|
system.toOpenArray(arr.data, 0, arr.size)
|
||||||
|
|
||||||
proc worker(data: ptr Seq[char], queue: SignalQueue[int]) =
|
proc worker(data: ptr Seq[char], sig: ThreadSignalPtr) =
|
||||||
os.sleep(1_000)
|
os.sleep(1_000)
|
||||||
echo "running worker: "
|
echo "running worker: "
|
||||||
assert data[].data != nil
|
assert data[].data != nil
|
||||||
echo "worker: ", data[].toOpenArray()
|
echo "worker: ", data[].toOpenArray()
|
||||||
discard queue.send(data[].toOpenArray().len())
|
discard sig.fireSync()
|
||||||
|
|
||||||
proc finalizer(obj: DataObj) =
|
proc finalizer(obj: DataObj) =
|
||||||
echo "FINALIZE!!"
|
echo "FINALIZE!!"
|
||||||
@ -37,29 +37,26 @@ proc initMockSeq(msg: string): Seq[char] =
|
|||||||
result.data[i] = c
|
result.data[i] = c
|
||||||
result.size = 12
|
result.size = 12
|
||||||
|
|
||||||
proc runTest(tp: TaskPool, queue: SignalQueue[int]) {.async.} =
|
proc runTest(tp: TaskPool, sig: ThreadSignalPtr) {.async.} =
|
||||||
## init
|
## init
|
||||||
var obj: DataObj
|
var obj: DataObj
|
||||||
new(obj, finalizer)
|
obj.new(finalizer)
|
||||||
|
|
||||||
obj.mockSeq = initMockSeq("hello world!")
|
obj.mockSeq = initMockSeq("hello world!")
|
||||||
|
|
||||||
echo "spawn worker"
|
echo "spawn worker"
|
||||||
tp.spawn worker(addr obj.mockSeq, queue)
|
tp.spawn worker(addr obj.mockSeq, sig)
|
||||||
|
|
||||||
let res =
|
await wait(sig).wait(100.milliseconds)
|
||||||
await wait(queue).wait(100.milliseconds)
|
|
||||||
check res.get() == 12
|
|
||||||
|
|
||||||
suite "async tests":
|
suite "async tests":
|
||||||
|
|
||||||
var tp = Taskpool.new(num_threads = 2) # Default to the number of hardware threads.
|
var tp = Taskpool.new(num_threads = 2) # Default to the number of hardware threads.
|
||||||
var queue = newSignalQueue[int]()
|
let sig = ThreadSignalPtr.new().get()
|
||||||
|
|
||||||
asyncTest "test":
|
asyncTest "test":
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await runTest(tp, queue)
|
await runTest(tp, sig)
|
||||||
except AsyncTimeoutError:
|
except AsyncTimeoutError:
|
||||||
echo "Run GC"
|
echo "Run GC"
|
||||||
GC_fullCollect()
|
GC_fullCollect()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user