[
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?
I should say:
4. If timeout is over _before_ signal recieved, return null. Otherwise get
just released connection and return it to a client.
>
> --
> Ilya A. Volynets-Evenbakh
> Total Knowledge. CTO
> http://www.total-knowledge.com
>
>