change skynet.timeout api

This commit is contained in:
云风
2012-08-28 13:11:03 +08:00
parent f425d10c8b
commit 6e1fffac9a
2 changed files with 7 additions and 12 deletions

View File

@@ -53,25 +53,20 @@ function suspend(co, result, command, param, size)
dispatch_wakeup() dispatch_wakeup()
end end
function skynet.timeout(ti, func, ...) function skynet.timeout(ti, func)
local session = c.command("TIMEOUT",tostring(ti)) local session = c.command("TIMEOUT",tostring(ti))
assert(session) assert(session)
session = tonumber(session) session = tonumber(session)
local co local co = coroutine.create(func)
if select("#",...) == 0 then
co = coroutine.create(func)
else
local args = { ... }
co = coroutine.create(function()
func(unpack(args))
end)
end
assert(session_id_coroutine[session] == nil) assert(session_id_coroutine[session] == nil)
session_id_coroutine[session] = co session_id_coroutine[session] = co
end end
function skynet.fork(func,...) function skynet.fork(func,...)
skynet.timeout("0", func, ...) local args = { ... }
skynet.timeout("0", function()
func(unpack(args))
end)
end end
function skynet.sleep(ti) function skynet.sleep(ti)

View File

@@ -16,7 +16,7 @@ end
skynet.start(function() skynet.start(function()
skynet.fork(wakeup, coroutine.running()) skynet.fork(wakeup, coroutine.running())
skynet.timeout(300, timeout, "Hello World") skynet.timeout(300, function() timeout "Hello World" end)
for i = 1, 10 do for i = 1, 10 do
print(i, skynet.now()) print(i, skynet.now())
print(skynet.sleep(100)) print(skynet.sleep(100))