KBEngine实体间相互调用规则

KBEngine服务端实体调用客户端实体方式是:

self.client.xxxMethod()

xxxMethod需要定义为实体客户端方法,这个很好理解,没有什么问题。

但是在服务端实体调用服务端实体的时候就需要特别注意两个实体是否有可能在不同的进程。

如果两个实体是在同一个进程的,可以直接调用方法,不需要定义为实体协议方法,而且可以获取返回值。

但如果两个实体是在不同的进程,需要将方法定义为实体协议方法,而且不能获取返回值,返回值永远都是None,因为这个调用过程是通过网络线程进行的远程方法调用,不可等待。

就比如baseapp和cellapp是两个进程,那么base实体和cell实体肯定是在不同的进程上的。

还有就是如果你开启了多个baseapp(或cellapp),那么base实体(或cell实体)之间也可能是在不同进程上的。

但如果你只有一个baseapp(或cellapp),那么base实体(或cell实体)肯定是在同一进程上的。

以上为个人学习经验分享,仅供参考

猜你喜欢

转载自blog.51cto.com/14218068/2482549
今日推荐