Siempre que la operación que deba realizarse de forma asincrónica no requiera que la CPU haga el trabajo, esa operación se puede realizar sin generar otro subproceso. Por ejemplo, si la operación asíncrona es E / S, la CPU no tiene que esperar a que se complete la E / S. Solo necesita comenzar la operación, y luego puede pasar a otro trabajo mientras el hardware de E / S (controlador de disco, interfaz de red, etc.) realiza el trabajo de E / S. El hardware le avisa a la CPU cuando finaliza interrumpiendo la CPU, y luego el SO entrega el evento a su aplicación.
Con frecuencia, las abstracciones de nivel superior y las API no exponen las API asincrónicas subyacentes disponibles en el sistema operativo y el hardware subyacente. En esos casos, generalmente es más fácil crear subprocesos para realizar operaciones asincrónicas, incluso si el subproceso generado solo espera una operación de E / S.
Si la operación asincrónica requiere que la CPU trabaje, entonces esa operación generalmente tiene que ocurrir en otro hilo para que sea realmente asincrónica. Incluso entonces, en realidad solo será asíncrono si hay más de una unidad de ejecución.