请教下消息队列的问题
#1924
Replies: 2 comments
-
依赖后面的流程有可能导致一个没完全初始化完毕的服务被消息调度器调度到。 |
Beta Was this translation helpful? Give feedback.
0 replies
-
今天看了下service_snlua.c的代码 1,调用skynet_context_new()函数时,先一步建立了服务的消息队列
2,snlua_init()函数,给自己发了第一条信息,因此是能放进snlua的消息队列的
3,流程总结: 如果此时等有消息到来的时候,就立即把snlua消息队列放入全局队列 就是云大说的:依赖后面的流程有可能导致一个没完全初始化完毕的服务被消息调度器调度到 希望能帮助有需要的人,也算给自己做个笔记 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
skynet_mq.c文件:
即:先把 in_global 置为1,假装次级队列在全局消息队列中了;等服务初始化完成之后,再真正skynet_globalmq_push(queue)放入到全局消息队列
skynet_server.c文件:
此时真正把服务的消息放入全局消息队列
我记得几年前不知道哪里看过一篇文章,说了这样做的原因,现在再次看源码,就是想不起来
希望有知道的同学指点一下:
在服务刚创建的时候,为什么就需要把次级消息队列放到全局队列中去?
不能等有消息到来的时候,再通过 skynet_mq_push() 中的
自动放入全局消息队列呢?
Beta Was this translation helpful? Give feedback.
All reactions