As per the documentation here
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?

Any help is appreciated.