2013-07-01 35 views
2

我在運行使用IBM Informix 4GL和Tibco RV庫(libtibrv.so)構建的應用程序時遇到了困難。 Informix 4GL不是線程安全的,Tibco總是創建一個線程(我認爲它創建爲sson,因爲我們稱之爲tibrv_Open(),但也許它是在創建傳輸之後創建的)Tibco房車和線程

由於4GL對信號,這會導致應用程序崩潰(當進程運行Tibco線程時,會運行4GL信號處理程序)。

通過調試器,我發現這個trhead似乎在循環中......它調用select()的超時時間爲10秒。

我的問題是: - 有沒有辦法避免創建線程? (我不假) - 有沒有辦法配置我上面提到的超時? - 如果有人能解釋我這個線程的目的,我會很感激。我假設我們必須忍受它,但很好理解爲什麼它在那裏。也許它存在檢查服務器超時?

P.S .:應用程序使用C來與Tibco交互。我不這是非常相關的,但目前的情況是在Tru64上,我相信Tibco的交會是6.9。環境使用pthread庫。這些都是非常舊的版本。但客戶正在轉向更新的版本。

非常感謝您的任何意見。

回答

0

我還沒有碰到過Tibco的,所以我不知道,我可以幫忙,但是......

我建議創建一個單獨的進程來運行Tibco的代碼,用I4GL同一主叫C接口,它目前用於與Tibco庫進行通信,但對實現進行解壓,以便函數通過管道或套接字將消息發送到Tibco進程(將由初始化函數啓動)。這樣做的好處是,它將線程從I4GL代碼(它造成問題的地方)轉換爲純C和Tibco進程,可以編寫這些進程以確保它不會造成麻煩。