Skip to content
This repository was archived by the owner on Apr 23, 2023. It is now read-only.

Commit 6dc935b

Browse files
author
Jack Tang
committed
simplify example in readme
1 parent 930070f commit 6dc935b

File tree

1 file changed

+8
-26
lines changed

1 file changed

+8
-26
lines changed

README.md

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,51 +25,33 @@ proc fib(x: int): int =
2525
else: fib(x-1) + fib(x-2)
2626
2727
proc workerMain(proxy: ThreadProxy) {.thread.} =
28-
echo proxy.name, " is running"
29-
3028
# register action handler
3129
proxy.onData "fib":
3230
let x = data.getInt()
33-
echo proxy.name, " is finding fib(", x, ")"
34-
let y = fib(x)
35-
result = %*{
36-
"name": proxy.name,
37-
"input": x,
38-
"output": y
39-
}
31+
return %fib(x)
4032
4133
# start processing channel
42-
asyncCheck proxy.poll()
43-
44-
# do other async task here
45-
46-
runForever()
34+
waitFor proxy.poll()
4735
4836
proc main() =
4937
let proxy = newMainThreadProxy("master")
5038
asyncCheck proxy.poll()
5139
5240
# create N threads
5341
let N = 4
54-
for i in 0..<N:
42+
for i in 0 ..< N:
5543
proxy.createThread("worker_" & $i, workerMain)
5644
57-
# distribute M jobs to threads randomly
45+
# distribute M jobs to threads
5846
let M = 40
5947
var done = 0
6048
for x in 1..M:
6149
capture x:
62-
let future = proxy.ask("worker_" & $(x mod N), "fib", %x)
50+
let name = "worker_" & $(x mod N)
51+
let future = proxy.ask(name, "fib", %x)
6352
future.addCallback:
64-
if future.failed:
65-
let err = future.readError()
66-
echo err.msg
67-
else:
68-
let json = future.read
69-
let name = json["name"].getStr()
70-
let x = json["input"].getInt()
71-
let y = json["output"].getInt()
72-
echo name, " found fib(", x, ") = ", y
53+
let y = future.read
54+
echo name, ": fib(", x, ") = ", y
7355
done += 1
7456
7557
while done < M: poll()

0 commit comments

Comments
 (0)