ubus可用于两个进程之间的通信,并以类似json格式进行数据交互。ubus的常见场景为:
1)“客户端--服务器”形式的交互,即进程A注册一系列的服务,进程B去调用这些服务。
2)ubus支持以“订阅 -- 通知”的方式进行进程通信,即进程A提供订阅服务,其他进程可以选择订阅或退订该服务,进程A可以向所有订阅者发送消息。
由于ubus实现方式的限制,在一些场景中不适宜使用ubus:
1)ubus适用于少量数据的传输,如果数据量很大或是数据交互很频繁,则不宜用ubus。经过测试,当ubus一次传输数据量超过64KB,就不能正常工作了。并非ubus的bug,而是ubus限制了最大的消息长度。
2)ubus对多线程支持的不好,例如在多个线程中去请求同一个服务,就有可能出现不可预知的结果。ubus并非线程安全,多线程下可能会出现死锁的问题。
3)不建议递归调用ubus,例如进程A去调用进程B的服务,而B的该服务需要调用进程C的服务,之后C将结果返回给B,然后B将结果返回给A。如果不得不这样做,需要在调用过程中避免全局变量的重用问题。
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。