views:

59

answers:

2

Hello,

I'm writing a multi-threaded application, where there is a main thread which distributes tasks to the worker threads. According to the task, a worker thread creates a connection, by using a global occi environment. When a worker thread completes its task, it closes the connection (I'm sure, there is no exception thrown while termination).

My problem is that after a while(sometimes 5 mins, sometimes 5 hours) the threads cannot get connection from the environment, and they get blocked there.

What can be the problem?

A: 

Have you considered using a thread pool? Then you don't need to close the connection every time the work is done. Setting up/closing the database connection is also quite expensive, i think.

jopa
Yes, I know, I'm planning to do a performance study. But do you think that is the reason for the problem?
sahs
@sahs I haven't worked with OCCI directly yet. I prefer the OTL library (http://sourceforge.net/projects/otl).I used this in a multithreaded environment using a thread pool where each thread has it's own connection. This worked very well.
jopa
A: 

I guess I didn't identify the problem correctly. I thought the threads get blocked, but actually they didn't, they simply exited there unexpectedly :). Problem solved.

sahs