trying to setup a jobs flag

This commit is contained in:
Jaremy Creechley 2024-02-20 19:26:35 -07:00
parent 2de80356b2
commit dca235f469
3 changed files with 23 additions and 1 deletions

View File

@ -9,7 +9,7 @@ srcDir = "src"
# Dependencies
requires "chronos >= 4.0.0"
requires "threading"
requires "threading#head"
requires "taskpools >= 0.0.5"
requires "chronicles"

View File

@ -61,6 +61,11 @@ template toOpenArray*[T](arr: OpenArrayHolder[T]): auto =
func jobId*[T](fut: Future[T]): JobId =
JobId fut.id()
proc cancelled*[T](jobResult: JobResult[T]): bool =
# acquire jobResult.flags[].lock
# result = jobResult.flags[].isCancelled
discard
proc processJobs*[T](jobs: JobQueue[T]) {.async.} =
## Starts a "detached" async processor for a given job queue.
##
@ -87,6 +92,7 @@ proc createFuture*[T](jobs: JobQueue[T], name: static string): (JobResult[T], Fu
let fut = newFuture[T](name)
let id = fut.jobId()
let flags = newSharedPtr(JobFlags)
flags[].lock.initLock()
jobs.futures[id] = (fut, flags)
trace "job added: ", numberJobs = jobs.futures.len()
return (JobResult[T](id: id, queue: jobs.queue, flags: flags), fut)

View File

@ -34,6 +34,17 @@ proc strCompute(jobResult: JobResult[int], vals: OpenArrayHolder[char]) =
proc addStrings(jobResult: JobResult[float], vals: OpenArrayHolder[string]) =
discard
proc cancelTest(jobResult: JobResult[float], base: float, vals: OpenArrayHolder[float]) =
os.sleep(300)
if jobResult.cancelled():
discard
# discard jobResult.queue.send((jobResult.id, res,))
var res = base
for x in vals.toOpenArray():
res += x
discard jobResult.queue.send((jobResult.id, res,))
suite "async tests":
var tp = Taskpool.new(num_threads = 2) # Default to the number of hardware threads.
@ -75,3 +86,8 @@ suite "async tests":
var jobs = newJobQueue[float](taskpool = tp)
let job = jobs.submit(addStrings(@["a", "b", "c"]))
)
asyncTest "testing cancel":
var jobs = newJobQueue[float](taskpool = tp)
let res = await jobs.submit(addNumValues(10.0, @[1.0.float, 2.0]))
check res == 13.0