1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
local lanes = require "lanes"
local q = lanes.linda()
local pingpong = function(name, qr, qs, start)
print("start " .. name, qr, qs, start)
local count = 0
if start then
print(name .. ": sending " .. qs .. " 0")
q:send(qs, 0)
end
while count < 10 do
print(name .. ": receiving " .. qr)
local key, val = q:receive(qr)
if val == nil then
print(name .. ": timeout")
break
end
print(name .. ":" .. val)
val = val + 1
print(name .. ": sending " .. qs .. " " .. tostring(val + 1))
q:send(qs, val)
count = count + 1
end
return true
end
-- pingpong("L1", '0', '1', true)
local t1, err1 = lanes.gen("*", pingpong)("L1", 'a', 'b', true)
local t2, err2 = lanes.gen("*", pingpong)("L2", 'b', 'a', false)
t1:join()
t2:join()
print "TEST OK"
|