0
我正在編寫一個多線程應用程序。我的工作線程從環境對象獲取連接,如下所示:我應該把臨界區從OCCI環境中取得連接
//EnterCriticalSection(&cs);
conn = env->createConnection(username, password, connStr);
//LeaveCriticalSection(&cs);
併發,如果連接在一個臨界區創建或不? env是否需要它?爲什麼?
謝謝。
它說如果在THREADED_MUTEXED模式下創建環境,它就是線程安全的。但是,一段時間後,線程在創建連接時被鎖定。 http://www.youngcow.net/doc/oracle10g/appdev.102/b14294/reference014.htm – Feyyaz 2010-05-07 12:13:44
我對這些文檔的閱讀是,如果使用了'THREADED_MUTEXED',對'createEnvironment()'的調用是線程安全的。然而,關於'createConnection'是線程安全的。如果遇到問題,當您在關鍵部分中包裝'createConnection'時,它們會消失,那麼您應該保留關鍵部分。 – Glen 2010-05-07 12:24:55
我在大約3個小時內運行了關鍵部分的應用程序,到目前爲止沒有發生任何問題。不過,我仍然懷疑它的運行速度比沒有關鍵部分的運行慢得多。另外我想這並不意味着它是線程安全的,因爲它在測試時不會被鎖定。我對嗎? – Feyyaz 2010-05-07 13:48:41