From 7a6140e3a4e8bed0af05abe084e3c52cca4070dc Mon Sep 17 00:00:00 2001 From: Araq Date: Thu, 4 Aug 2011 19:47:35 +0200 Subject: fixes #42 --- tests/accept/compile/tthread_generic.nim | 35 ++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 tests/accept/compile/tthread_generic.nim (limited to 'tests/accept') diff --git a/tests/accept/compile/tthread_generic.nim b/tests/accept/compile/tthread_generic.nim new file mode 100644 index 000000000..4ef939408 --- /dev/null +++ b/tests/accept/compile/tthread_generic.nim @@ -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) + -- cgit 1.4.1-2-gfad0