Thanks Howard,

I might still borrow a few minutes from you for the followings

> No. MDB_NOTLS has no relevance to rw txns. The docs state quite clearly that 
> it only
> affects read-only txns. Read more carefully.

Sorry I had a typo in the previous reply, I meant to say "ro txn". Let me 
rephrase the whole question: I create an LMDB env with MDB_NOTLS, and open a 
readonly txn from this env with "mdb_txn_begin" and flag "MDB_RDONLY". Then I 
open N cursors from this readonly txn, namely cursor_0, cursor_1, ..., 
cursor_{N-1}; meanwhile my application can use M threads. So if I guarantee 
that, at any times, *at most 1* of the M threads is accessing *one of* the N 
cursors, then my application is thread-safe in using LMDB.

Is this correct understanding?

> Read more carefully.

One may interpret it in many ways, like "cursors might not outlive a txn's 
lifecycle", or "cursor and its transaction might not be accessed by different 
threads". I'd appreciate if it can be more clarified.

Thanks,
Xiaoya

Reply via email to