aboutsummaryrefslogtreecommitdiff
path: root/tests/pingpong.lua
diff options
context:
space:
mode:
authorBenoit Germain <bnt.germain@gmail.com>2013-01-30 20:28:47 +0100
committerBenoit Germain <bnt.germain@gmail.com>2013-01-30 20:28:47 +0100
commitb657f38535c3c27a848353ef853d6667d6acc917 (patch)
tree8679a62c0b6343eae4781cff10a0ea60460d9cb4 /tests/pingpong.lua
parent3377b95704e611a288791fee6a7bc59c5ecebf2d (diff)
downloadlanes-b657f38535c3c27a848353ef853d6667d6acc917.tar.gz
lanes-b657f38535c3c27a848353ef853d6667d6acc917.tar.bz2
lanes-b657f38535c3c27a848353ef853d6667d6acc917.zip
version 3.5.0
* new: API lanes.require(), use it instead of regular require() for modules that export C functions you need to send over. * new: lanes no longer require 'lanes.core' by default in every created state. Use {required={"lanes.core"}} if you need to transfer lanes functions. * internal: because of the above, reworked the timer implementation to remove upvalue-dependency on lanes.core * new: API lanes.timer_lane, to be able to operate on timer lane if need be * improved: if a module is a full userdata, scan its metatable for function database population * improved: on_state_create can be a Lua function * changed: on_state_create is called after the base libraries are loaded * package[loaders|searchers] is no longer transfered as function naming depends on slot order * internal: changed separator from '.' to '/' in lookup databases to be able to distinguish search levels and dot coming from module names * added some mode debug spew * updated tests to reflect the above changes
Diffstat (limited to 'tests/pingpong.lua')
-rw-r--r--tests/pingpong.lua31
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 @@
1local lanes = require 'lanes'.configure()
2local q = lanes.linda()
3
4local 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
24end
25
26-- pingpong("L1", '0', '1', true)
27local t1, err1 = lanes.gen("*", pingpong)("L1", 'a', 'b', true)
28local t2, err2 = lanes.gen("*", pingpong)("L2", 'b', 'a', false)
29
30t1:join()
31t2:join() \ No newline at end of file