2

在运行使用 IBM Informix 4GL 和 Tibco RV 库 (libtibrv.so) 构建的应用程序时,我遇到了困难。Informix 4GL 不是线程安全的,Tibco 总是创建一个线程(我认为它创建为 sson,就像我们调用 tibrv_Open() 一样,但可能是在创建传输之后)

由于 4GL 对信号的处理,这会导致应用程序崩溃(当进程运行 Tibco 线程时会运行 4GL 信号处理程序)。

使用调试器时,我注意到这个 trhead 似乎处于循环状态......它调用 select() 时超时为 10 秒。

我的问题是: - 有没有办法避免创建线程?(我假设不是) - 有没有办法配置我上面提到的超时?- 如果有人可以向我解释这个线程的目的,我将不胜感激。我假设我们将不得不忍受它,但很高兴了解它为什么在那里。也许它存在检查服务器超时?

PS:应用程序使用 C 与 Tibco 进行交互。我不认为这是非常相关的,但当前场景是在 Tru64 上,我相信 Tibco 集合点是 6.9。该环境使用 pthread 库。这些都是非常旧的版本。但是客户正在转向更新的版本。

非常感谢您的任何评论。

4

1 回答 1

0

我没有遇到过 Tibco,所以我不确定我能帮上什么忙,但是......

我建议创建一个单独的进程来运行 Tibco 代码,I4GL 调用它当前用于与 Tibco 库通信的同一个 C 接口,但要破坏实现,以便函数通过管道或套接字将消息发送到 Tibco 进程(这将由初始化函数启动)。这样做的好处是,它将线程从 I4GL 代码(它会导致麻烦)中取出到一个纯 C 和 Tibco 进程中,可以编写该进程以确保它不会造成问题。

于 2013-07-07T01:55:08.117 回答