skynet.call 调用
上次 写了一篇文章讲 skynet.send,最近想起一个 call 的问题,流程跟 skynet.send 差不多,再记录一下
虽然官方 wiki 并没有记录,但是 skynet.call
一个不存在的服务,并不会报错的,最神奇的是当你真的起了同名的服务,这个服务就真的能收到这条消息。skynet.call
本质上还是 skynet.send
,只是 send 完以后将 session 号和 coroutine 记下来,然后自己调用 yield 将控制权交还给 skynet。按上篇文章所述,给一个不以 .
开始的名字发消息,会经过 service_harbor.c
的 remote_send_name
函数。该函数先从 harbor 服务记录的名字哈希表里查找,找不到就新建一个 queue,将消息堆在里面。等同名服务起来后,就可以收到这条消息了
Tag:
skynet