Yes, in theory. Not normally, in the real world.
In the common case, async
is used for I/O-bound operations, and the overhead of thread management is undetectable in comparison to them. Most of the time, asynchronous operations either take a very long time (compared to thread management) or are already completed (e.g., a cache). Note that async
has a “fast path” that kicks in if the operation is already completed, where it does not yield the thread.
For more information, see the Zen of Async and Async Performance.