I've not used Threads with DBI, however, from whatever threads i've used so far, I've always found it useful to use threads with semaphore and control the number of threads accessing a particular subroutine.
Also be careful of using threads on windows box with multiple CPUs. You also have to be careful about the memory used by threads!