How to make it works correctly? Also, if any, please tell me a better approach for this. Thanks in advance. import threadpool from os import sleep- type
- TimerObj[T] = object
- doit: bool time: int
- when T isnot void:
- arg: T exec: ExecProc[T]
- else:
- exec: ExecNoArg
ExecNoArg = proc()
Timer[T] = ref TimerObj[T] PTimer[T] = ptr TimerObj[T]
- proc runit(x: PTimer[void], duration: int) =
- sleep duration
- if x.doit:
- x.exec()
- proc setTimeout(exec: ExecNoArg, duration: int): Timer[void] =
var temp: Timer[void] new temp temp.exec = exec temp.doit = true temp.time = duration
spawn runit(temp[].addr, duration)
result = temp
- proc cancelTimeoutT =
- timer.doit = false
- var timer = setTimeout(
- (proc() = echo "interweaving echo"), 300)
cancelTimeout timer # should set the branch false and won't run the supply proc
sleep 400 # if it works, it'll silently end