mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 12:20:41 +00:00
Use fork instead of timeout 0, see #873
This commit is contained in:
@@ -193,7 +193,7 @@ function suspend(co, result, command, param, param2)
|
|||||||
session_coroutine_address[co] = nil
|
session_coroutine_address[co] = nil
|
||||||
session_coroutine_tracetag[co] = nil
|
session_coroutine_tracetag[co] = nil
|
||||||
end
|
end
|
||||||
skynet.timeout(0,function() end) -- trigger command "SUSPEND"
|
skynet.fork(function() end) -- trigger command "SUSPEND"
|
||||||
error(debug.traceback(co,tostring(command)))
|
error(debug.traceback(co,tostring(command)))
|
||||||
end
|
end
|
||||||
if command == "SUSPEND" then
|
if command == "SUSPEND" then
|
||||||
@@ -540,10 +540,14 @@ function skynet.dispatch_unknown_response(unknown)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function skynet.fork(func,...)
|
function skynet.fork(func,...)
|
||||||
local args = table.pack(...)
|
local n = select("#", ...)
|
||||||
local co = co_create(function()
|
local co
|
||||||
func(table.unpack(args,1,args.n))
|
if n == 0 then
|
||||||
end)
|
co = co_create(func)
|
||||||
|
else
|
||||||
|
local args = { ... }
|
||||||
|
co = co_create(function() func(table.unpack(args,1,n)) end)
|
||||||
|
end
|
||||||
table.insert(fork_queue, co)
|
table.insert(fork_queue, co)
|
||||||
return co
|
return co
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user