mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-25 12:43:09 +00:00
add test trace
This commit is contained in:
@@ -131,15 +131,13 @@ function skynet.sleep(ti)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function skynet.yield()
|
function skynet.yield()
|
||||||
local session = c.command("TIMEOUT","0")
|
return skynet.sleep("0")
|
||||||
assert(session)
|
|
||||||
coroutine_yield("SLEEP", tonumber(session))
|
|
||||||
sleep_session[coroutine.running()] = nil
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function skynet.wait()
|
function skynet.wait()
|
||||||
local session = c.genid()
|
local session = c.genid()
|
||||||
coroutine_yield("SLEEP", session)
|
coroutine_yield("SLEEP", session)
|
||||||
|
c.trace_switch(trace_handle, session)
|
||||||
local co = coroutine.running()
|
local co = coroutine.running()
|
||||||
sleep_session[co] = nil
|
sleep_session[co] = nil
|
||||||
session_id_coroutine[session] = nil
|
session_id_coroutine[session] = nil
|
||||||
@@ -294,7 +292,6 @@ local function dispatch_message(prototype, msg, sz, session, source, ...)
|
|||||||
if co == "BREAK" then
|
if co == "BREAK" then
|
||||||
session_id_coroutine[session] = nil
|
session_id_coroutine[session] = nil
|
||||||
elseif co == nil then
|
elseif co == nil then
|
||||||
c.trace_switch(trace_handle, session)
|
|
||||||
unknown_response(session, source, msg, sz)
|
unknown_response(session, source, msg, sz)
|
||||||
else
|
else
|
||||||
c.trace_switch(trace_handle, session)
|
c.trace_switch(trace_handle, session)
|
||||||
|
|||||||
28
service/testtrace.lua
Normal file
28
service/testtrace.lua
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
local skynet = require "skynet"
|
||||||
|
|
||||||
|
local trace_cache = {}
|
||||||
|
|
||||||
|
skynet.trace_callback(function(handle, ti)
|
||||||
|
-- skynet will call this function when the thread which create handle(traceid) end, and pass the time (ti)
|
||||||
|
print("TRACE",trace_cache[handle],ti)
|
||||||
|
trace_cache[handle] = nil
|
||||||
|
end)
|
||||||
|
|
||||||
|
local function f (i)
|
||||||
|
-- create a trace object
|
||||||
|
local traceid = skynet.trace()
|
||||||
|
-- name traceid in trace_cache[]
|
||||||
|
trace_cache[traceid] = "thread " .. i
|
||||||
|
|
||||||
|
for i=1,i do
|
||||||
|
skynet.sleep(i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
skynet.start(function()
|
||||||
|
for i = 1 , 100 do
|
||||||
|
skynet.fork(f, i)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user