在 Corba 服务器端有很多关于多线程的内容,但我对客户端感兴趣。我们有一个多线程客户端(Solaris、Orbix 6.3)和一个初始化 ORB 的 Corba 单例“管理器”。在运行时,'lsof' 只显示一个到 Corba 服务器的 TCP 连接,因此从客户端工作线程发出的所有同步调用都应该被序列化。
想改变这种安排以利用并行性:每个线程管理自己的连接。我已经更改了设置,以便每个工作线程调用 ORB_init() 等而不是单例。
现在完全不解:“lsof”现在显示 2 个 TCP 连接,但有 6 个工作线程。 有些地方不对,预期的 TCP 连接数与工作线程数一样多。可能是这种方法很幼稚——例如,每个线程调用 ORB_init() 是否有意义?
我需要有人对此发表意见。多线程客户端 的示例代码会有很大帮助。同样,在 Solaris 上使用 Orbix 6.3。
亲切的问候,
阿德里安
最佳答案
连接的管理是特定于普通 CORBA 的实现。每个供应商都有自己的专有方式来配置他们的行为。如果您检查 RTCORBA 规范,它有一个标准化的方法来配置如何使用客户端和服务器之间的连接。
我不知道 Orbix 是如何工作的以及它是否支持 RTCORBA,这可能是您可以从他们的手册中获得的信息。我知道 TAO 在客户端对线程有很多支持。默认情况下,当多个线程对同一服务器进行调用时,可以同时打开多个 tcpip 传输。
关于multithreading - 多线程 Corba 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12562559/