需要设计建议,以便在 C++ 中的两个不同共享库(.so)之间进行通信

问题描述 投票:0回答:1

我有两个 .so (不同的进程),现在我想在 C++ 中的 2 个 .so 之间进行双向通信,例如使用任何正常的 api 调用和回调。例如,如果从一个文件(一个.so)调用一个方法,那么它应该传递到具有相同数据(另一个.so)的另一个文件,反之亦然。 (例如,像 ne 类一样,它将具有所有方法,并且两个文件可以实现并调用这些方法以进行双向通信) (不想共享内存或基于消息,因为它将是相同的进程上下文)我正在寻找不同的进程上下文

不想共享内存或基于消息,因为它将是相同的进程上下文 期望来自一个文件(一个 .so),我们应该能够调用带有一些参数的方法,并且该参数应该传递/获取传递给另一个文件(另一个 .so)。就像C++中2个.so之间的双向通信一样,就像api调用但不同的进程范围。

c++ api design-patterns callback
1个回答
0
投票

我想你有以下情况


      main App
      /      \
     /        \
    /          \
Library1.so     Library2.so

有一些设计模式有助于将数据从一个库传递到另一个库,同时保持它们的松散耦合,仅举几个最常用的。

  1. 观察者模式,其中库 1 允许您注册稍后将调用的多个回调,您的主应用程序必须注册库 2 函数作为将由库 1 调用的回调,帮助实现这一点的库是升压信号libsigc++
  2. 中介者模式,其中您的
    main App
    将公开
    Library 1
    可以调用的接口,然后
    main App
    将调用
    Library 2
  3. 消息传递,其中
    Library 1
    会将消息放入一个线程的消息队列中,而
    Library 2
    将从另一个线程的队列中弹出项目。

Qt 混合使用它们,其中同一线程上的消息使用观察者模式,不同线程上的消息使用消息传递。

© www.soinside.com 2019 - 2024. All rights reserved.