I am new to TPL and I am wondering: How does the asynchronous programming support that is new to C# 5.0 (via the new async
and await
keywords) relate to the creation of threads?
Specifically, does the use of async/await
create a new thread each time that they are used? And if there many nested methods that use async/await
, is a new thread created for each of those methods?
In short NO
From Asynchronous Programming with Async and Await : Threads
The async and await keywords don't cause additional threads to be created. Async methods don't require multithreading because an async method doesn't run on its own thread. The method runs on the current synchronization context and uses time on the thread only when the method is active. You can use Task.Run to move CPU-bound work to a background thread, but a background thread doesn't help with a process that's just waiting for results to become available.