以前随手写的笔记, 可能有错误, 以后再改.
一. 基本原理
一个service就是一个luavm, service之间通过skynet.call来阻塞调用, 使用skynet.send非阻塞发消息.
每个skynet.call 在被调用的service中就是一个协程, 当在协程中调用阻塞api时, 会挂起协程.
这时service还是可以对外提供服务, 于是可能产生时序问题.
例如: A, B同时call C的test服务,
function C.test(a)
print(a, "begin")
skynet.sleep(300)
print(a, "end")
end
A.