一个服务在接收到请求后,会对该请求进行处理,在处理的过程中,能同时接收并处理后到达的请求。
一、测试脚本
修改文章:skynet:session 中的测试脚本:echoluamsg.lua 与 testforkcall.lua:
echoluamsg.lua
skynet = require "skynet"
require "skynet.manager"
local command = {}
function command.func1()
skynet.sleep(2000)
return 1
end
function command.func2()
return 2
end
skynet.start(function()
skynet.register("echoluamsg")
skynet.dispatch("lua", function(session, address, cmd)
local f = command[cmd]
if f then
print(cmd .. " start")
ret = f()
skynet.retpack(ret)
print(cmd .. " end, ret:" .. ret)
end
end)
end)
testforkcall.lua
skynet = require "skynet"
local function task()
local r = skynet.send("echoluamsg", "lua", "func1")
skynet.error("func1 return:", r)
r = skynet.call("echoluamsg", "lua", "func2")
skynet.error("func2 return:", r)
end
skynet.start(function()
skynet.fork(task)
end)
testforkcall 先后使用 skynet.send() 与 skynet.call() 向服务 echoluamsg 发送请求。
二、测试结果