make task/uniqtask consistent (#1902)

This commit is contained in:
t0350
2024-04-23 15:32:36 +08:00
committed by GitHub
parent 18a6dc5786
commit caf513e6c0

View File

@@ -1076,10 +1076,20 @@ function skynet.stat(what)
return c.intcommand("STAT", what)
end
local function task_traceback(co)
if co == "BREAK" then
return co
elseif timeout_traceback and timeout_traceback[co] then
return timeout_traceback[co]
else
return traceback(co)
end
end
function skynet.task(ret)
if ret == nil then
local t = 0
for session,co in pairs(session_id_coroutine) do
for _,co in pairs(session_id_coroutine) do
if co ~= "BREAK" then
t = t + 1
end
@@ -1097,23 +1107,13 @@ function skynet.task(ret)
if tt == "table" then
for session,co in pairs(session_id_coroutine) do
local key = string.format("%s session: %d", tostring(co), session)
if co == "BREAK" then
ret[key] = "BREAK"
elseif timeout_traceback and timeout_traceback[co] then
ret[key] = timeout_traceback[co]
else
ret[key] = traceback(co)
end
ret[key] = task_traceback(co)
end
return
elseif tt == "number" then
local co = session_id_coroutine[ret]
if co then
if co == "BREAK" then
return "BREAK"
else
return traceback(co)
end
return task_traceback(co)
else
return "No session"
end
@@ -1130,7 +1130,7 @@ end
function skynet.uniqtask()
local stacks = {}
for session, co in pairs(session_id_coroutine) do
local stack = traceback(co)
local stack = task_traceback(co)
local info = stacks[stack] or {count = 0, sessions = {}}
info.count = info.count + 1
if info.count < 10 then