Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os, threadpool
- proc p1(cancelChan: ptr Channel[bool]):bool=
- result = true
- for i in countup(0,50):
- echo "p1 Doing action"
- sleep(1000)
- let (hasData, msg) = cancelChan[].tryRecv()
- if msg == true:
- echo "Cancelling p1"
- return
- echo "Done p1..."
- # proc p2(cancelChan: ptr Channel[bool]): bool =
- # result = true
- # for i in countup(0,5):
- # echo "p2 Doing action"
- # sleep(1000)
- # let (hasData, msg) = cancelChan[].tryRecv()
- # if msg == true:
- # echo "Cancelling p1"
- # return
- # echo "Done p2"
- proc timeoutable(p:proc, timeout=10)=
- var cancelChan: Channel[bool]
- var t: Thread[ptr Channel[bool]]
- cancelChan.open()
- createThread[ptr Channel[bool]](t, p, (cancelChan.addr))
- for i in countup(0, timeout):
- if t.isReady():
- return
- sleep(1000)
- cancelChan.send(true)
- when isMainModule:
- timeoutable(p1)
- # timeoutable(p2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement