One thing to keep in mind is that when you are doing asynchronous reads/writers, the driver is taking care of spawning multiple threads (when necessary)for you. In fact, that is the advantage of having asynch I/O operations; and the fact you are informed when data is ready so your program can do other tasks.
Just my 0.02,
Azucena