document updated 14 years ago, on Dec 18, 2009
- DBD::Oracle definitely uses blocking calls.
- AnyEvent::DBI manages to make DBI work in an asynchronous/non-blocking manner. The way it does that is basic:
- create a pipe
- fork off a child process, which does all of the direct DBI interaction
- the parent process uses IO::Select when reading from the pipe, which allows it to do other things while it's still waiting for results from the child process