multithreading - Tibco RV 和线程

标签 multithreading crash informix tibco 4gl

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

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

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

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

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

非常感谢您的任何评论。

最佳答案

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

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

关于multithreading - Tibco RV 和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17403052/

相关文章:

multithreading - 设置OpenMP中的内核数

android - 在 Android 的自定义 View 中模拟动画

c++ - 我如何在 C++ 中使用异步函数?

php - xdebug在使用phalcon进行收集时中断

android - 当我通过gmail或shareIt共享apk而没有启动时,android应用程序崩溃

java - 使用 Swagger 文档的异步 Jersey REST API 中的 NullPointerException

objective-c - 赋值时崩溃

sql - 继续 - 在查询完成之前查看 FIRST_ROWS

sql - 错误 360 : Cannot modify table or view used in subquery

sql - 为什么这个 SQL 存储过程需要创建一个临时表才能工作(返回结果)?