From 281acf4c71204134d14e7678dc66ddff79c9877d Mon Sep 17 00:00:00 2001 From: Cloud Wu Date: Tue, 7 Aug 2018 14:55:26 +0800 Subject: [PATCH] Use fork instead of timeout 0, see #873 --- lualib/skynet.lua | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lualib/skynet.lua b/lualib/skynet.lua index 15d08f6d..a9fc92af 100644 --- a/lualib/skynet.lua +++ b/lualib/skynet.lua @@ -193,7 +193,7 @@ function suspend(co, result, command, param, param2) session_coroutine_address[co] = nil session_coroutine_tracetag[co] = nil end - skynet.timeout(0,function() end) -- trigger command "SUSPEND" + skynet.fork(function() end) -- trigger command "SUSPEND" error(debug.traceback(co,tostring(command))) end if command == "SUSPEND" then @@ -540,10 +540,14 @@ function skynet.dispatch_unknown_response(unknown) end function skynet.fork(func,...) - local args = table.pack(...) - local co = co_create(function() - func(table.unpack(args,1,args.n)) - end) + local n = select("#", ...) + local co + if n == 0 then + co = co_create(func) + else + local args = { ... } + co = co_create(function() func(table.unpack(args,1,n)) end) + end table.insert(fork_queue, co) return co end