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?
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?