fixes #42
This commit is contained in:
parent
f0145ba7c5
commit
7a6140e3a4
5 changed files with 127 additions and 118 deletions
35
tests/accept/compile/tthread_generic.nim
Normal file
35
tests/accept/compile/tthread_generic.nim
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
type
|
||||
TThreadFuncArgs[T] = object of TObject
|
||||
a: proc(): T {.thread.}
|
||||
b: proc(val: T) {.thread.}
|
||||
|
||||
proc handleThreadFunc(arg: TThreadFuncArgs[int]){.thread.} =
|
||||
var func = arg.a
|
||||
var callback = arg.b
|
||||
var output = func()
|
||||
callback(output)
|
||||
|
||||
proc `@||->`*[T](func: proc(): T {.thread.},
|
||||
callback: proc(val: T){.thread.}): TThread[TThreadFuncArgs[T]] =
|
||||
var thr: TThread[TThreadFuncArgs[T]]
|
||||
var args: TThreadFuncArgs[T]
|
||||
args.a = func
|
||||
args.b = callback
|
||||
createThread(thr, handleThreadFunc, args)
|
||||
return thr
|
||||
|
||||
proc `||->`*[T](func: proc(): T{.thread.}, callback: proc(val: T){.thread.}) =
|
||||
discard func @||-> callback
|
||||
|
||||
when isMainModule:
|
||||
import os
|
||||
proc testFunc(): int {.thread.} =
|
||||
return 1
|
||||
proc callbackFunc(val: int) {.thread.} =
|
||||
echo($(val))
|
||||
|
||||
var thr = (testFunc @||-> callbackFunc)
|
||||
echo("test")
|
||||
joinThread(thr)
|
||||
os.sleep(3000)
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue