Это более общий вопрос, касающийся асинхронных шаблонов в C# .NET, описанных в MSDN здесь.
Когда требуется вызвать длительную синхронную операцию (например, WCF, запрос БД, ввод-вывод и т. д.), и я не хочу, чтобы поток блокировался (например, GUI поток), означает ли это, что где-то должен существовать другой поток, который выполняет блокировку?
Обязательно ли для выполнения синхронного вызова асинхронного требуется наличие потока для блокировки?
Итак, если я делаю 10 длительных асинхронных вызовов (которые на самом деле являются 10 синхронными вызовами), должно ли быть 10 потоков, выполняющих ожидание? Или есть механизм, предотвращающий блокировку 10 потоков?
В WCF, вы можете создать методы Begin и End для вызова WCF, чтобы сделать его асинхронным.Означает ли это, что когда я вызываю этот асинхронный метод, есть поток какой-то где, на клиенте или на сервере, меня ждут?
Я читал несколько статей о различных методах достижения асинхронности, но в этих статьях не объясняется, что делается под капотом.
Обновление
Я сделал свой вопрос более конкретным, так как меня больше интересует .NET. асинхронные шаблоны, описанные в MSDN.
Обновление 2
Я изменил вопрос, чтобы сделать его еще более конкретным, чтобы сделать синхронные вызовы асинхронными.