aboutsummaryrefslogtreecommitdiff
path: root/tests/pingpong.lua
blob: 06c090349b573faa722598f1078f5f571a078c29 (plain)
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("*", { name = 'auto' }, pingpong)("L1", 'a', 'b', true)
local t2, err2 = lanes.gen("*", { name = 'auto' }, pingpong)("L2", 'b', 'a', false)

t1:join()
t2:join()
print "TEST OK"