2010-05-07 8 views
0

Я пишу многопоточное приложение, где есть основной поток, который распределяет задачи на рабочие потоки. В соответствии с этой задачей рабочий поток создает соединение, используя глобальную среду occi . Когда рабочий поток завершает свою задачу, он закрывает соединение (я уверен, что исключение не возникает при завершении).OCCI createEnvironment Blocks My Thread

Моя проблема заключается в том, что через некоторое время (иногда 5 минут, иногда 5 часов) потоки не могут получить соединение с окружающей средой, и они блокируются там.

В чем может быть проблема?

ответ

1

Я думаю, что я не идентифицировал проблему правильно. Я думал, что потоки блокируются, но на самом деле они этого не сделали, они просто неожиданно вышли туда :). Задача решена.

0

Считаете ли вы использование пула потоков? Тогда вам не нужно закрывать соединение каждый раз, когда работа выполняется. Установка и закрытие соединения с базой данных также довольно дорого, я думаю.

+0

Да, я знаю, я планирую провести исследование эффективности. Но как вы думаете, в чем причина этой проблемы? – Feyyaz

+0

@sahs Я еще не работал с OCCI. Я предпочитаю библиотеку OTL (http://sourceforge.net/projects/otl). Я использовал это в многопоточной среде, используя пул потоков, в котором каждый поток имеет свое собственное соединение. Это работало очень хорошо. – jopa