Home Projects Jobs Clientele Contact


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Db pool [was: My little comments to CPP code]

sergey@total-knowledge.com wrote:
>>> I meant for ThreadPool to be only an example on how CWaiters can be
>>> used,
>>> not as reference in implementation of database pool design. They are
>>> different
>>> in many ways (one of them - threads actually do something themselves,
>>> while
>>> database connections only have operations performed on them by those who
>>> request them.)
>>> Again - a pencil and a piece of paper, with little drawing of who does
>>> what
>>> might help you. The line in a super-market analogy can work fairly well,
>>> if you map
>>> your objects properly.
>> So here is the case when getConnection() is called, but maxCon limit has
>> been reached.
>> 1. Check if there is an available connection in the pool, if yes, return
>> it.
>> 2. If no available connection, then wait 'timeout' milliseconds.
>> 3. If connection is released, CWaiter sends a signal from
>> releaseConnection() to notify getConnection() that there is an available
>> connection.
Good up to here.
>> 4. If 'timeout' is over, return null. Otherwise call getConnection()
>> again.
> To be more precise:
> 4. If timeout is over _before_ signal recieved, return null. Otherwise
> call getConnection() again.
Why would you want to call it again?

Ilya A. Volynets-Evenbakh
Total Knowledge. CTO

Authoright © Total Knowledge: 2001-2008