Thanks, I think I get it now.

On Thu, Sep 11, 2014 at 5:06 PM, Howard Chu <[email protected]> wrote:

> Harry B wrote:
>
>>
>> Let me rephrase and see if I understand correctly.
>>
>> 1. If I have 10 threads (but only one database), then I would need to
>> create
>> 10 dbi handles to the same DB and then use them as required from each
>> thread
>> making sure no two threads share the same DBI handle?
>>
>
> No. Re-read the documentation that you linked. It very clearly states that
> if you open the same DB multiple times you will get the same handle back,
> so why would you ever try to open it 10 times for 10 threads??
>
> It also says very clearly that after the handle is persisted into the
> shared environment it may be used by other transactions.
>
>  2. Inside each thread, I would open a new transaction (as required for the
>> then relevant/appropriate read/write operation), but I would use a DBI
>> handle
>> obtained in the main thread even though that DBI was created using a
>> different
>> transaction handle that the one we are about to use for the current
>> thread?
>>
>
>
>  Thanks
>> --
>> Harry
>>
>>
>> On Thu, Sep 11, 2014 at 4:35 PM, Howard Chu <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>>     Harry B wrote:
>>
>>         Hello,
>>
>>         As per the documentation here
>>         http://symas.com/mdb/doc/__group__mdb.html#__
>> gac08cad5b096925642ca359a6d6f0__562a
>>         <http://symas.com/mdb/doc/group__mdb.html#
>> gac08cad5b096925642ca359a6d6f0562a>
>>         I see the following,
>>
>>         "This function must not be called from multiple concurrent
>> transactions. A
>>         transaction that uses this function must finish (either commit or
>> abort)
>>         before any other transaction may use this function."
>>
>>         This seems to imply that after one txn has begun on an
>> environment, I
>>         cannot
>>         create another txn or dbi until the first one has finished - that
>>         doesn't seem
>>         to be right.
>>
>>         If I have multi-threaded app, what is the expected sequence for
>>         creation of
>>         Environment, Transaction, and DBI handles?
>>
>>
>>     Before starting any other threads:
>>        Create the environment.
>>        Open a transaction.
>>        Open all DBI handles the app will need.
>>        Commit the transaction.
>>
>>     After that use the DBI handles freely among any transactions/threads.
>>
>
>
> --
>   -- Howard Chu
>   CTO, Symas Corp.           http://www.symas.com
>   Director, Highland Sun     http://highlandsun.com/hyc/
>   Chief Architect, OpenLDAP  http://www.openldap.org/project/
>



-- 
Harry

Reply via email to