diff options
Diffstat (limited to 'tests/pingpong.lua')
-rw-r--r-- | tests/pingpong.lua | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/pingpong.lua b/tests/pingpong.lua new file mode 100644 index 0000000..30cd360 --- /dev/null +++ b/tests/pingpong.lua | |||
@@ -0,0 +1,31 @@ | |||
1 | local lanes = require 'lanes'.configure() | ||
2 | local q = lanes.linda() | ||
3 | |||
4 | local pingpong = function(name, qr, qs, start) | ||
5 | print("start " .. name, qr, qs, start) | ||
6 | local count = 0 | ||
7 | if start then | ||
8 | print(name .. ": sending " .. qs .. " 0") | ||
9 | q:send(qs, 0) | ||
10 | end | ||
11 | while count < 10 do | ||
12 | print(name .. ": receiving " .. qr) | ||
13 | local key, val = q:receive(qr) | ||
14 | if val == nil then | ||
15 | print(name .. ": timeout") | ||
16 | break | ||
17 | end | ||
18 | print(name .. ":" .. val) | ||
19 | val = val + 1 | ||
20 | print(name .. ": sending " .. qs .. " " .. tostring(val + 1)) | ||
21 | q:send(qs, val) | ||
22 | count = count + 1 | ||
23 | end | ||
24 | end | ||
25 | |||
26 | -- pingpong("L1", '0', '1', true) | ||
27 | local t1, err1 = lanes.gen("*", pingpong)("L1", 'a', 'b', true) | ||
28 | local t2, err2 = lanes.gen("*", pingpong)("L2", 'b', 'a', false) | ||
29 | |||
30 | t1:join() | ||
31 | t2:join() \ No newline at end of file | ||