Jest to bardziej ogólne pytanie dotyczące asynchronicznych wzorców w języku C# .NET opisanych na stronie MSDN here.W języku C# .NET, czy operacja asynchroniczna musi utworzyć wątek blokujący?
Gdy długo działa synchroniczny operacja jest wymagana, aby nazwać (np - WCF, DB zapytanie, IO, etc), a ja nie chcę nić, aby zablokować (np - wątek GUI), czy to oznacza że gdzieś musi istnieć inny wątek blokujący?
Czy dokonując synchronicznego połączenia asynchroniczny koniecznie wątku gdzieś zablokować?
Tak więc, jeśli wykonam 10 długich połączeń asynchronicznych (które są w rzeczywistości 10 wywołań synchronicznych), czy musi być 10 wątków, które czekają? A może istnieje mechanizm, który zapobiega blokowaniu 10 wątków?
W WCF można tworzyć metody Begin i End dla wywołania WCF, aby uczynić je asynchronicznymi. Czy to oznacza, że kiedy nazywam tę metodę asynchroniczną, gdzieś jest wątek, na kliencie lub serwerze, który czeka na mnie?
Przeczytałem kilka artykułów na temat różnych metod osiągnięcia asynchronii, ale te artykuły nie wyjaśniają, co dzieje się pod maską.
Aktualizacja
zrobiłem moje pytanie bardziej SZCZEGÓLNE, ponieważ jestem bardziej zainteresowany o .NET. wzorce asynchroniczne opisane przez MSDN.
Aktualizacja 2
I zreformował pytanie jeszcze bardziej specyficzne co synchronicznego połączeń asynchronicznych.
Wielką link do artykułu. Więc nie mówi tego wprost, ale wygląda na asynchroniczne wywołania niskiego poziomu, odbywa się to bez blokowania wątków. Ale jeśli chcesz wykonać synchroniczne wywołanie asynchroniczne, musisz utworzyć wątek. Czy mam rację? – Mas
@Mas Tworzenie "wątku" jest tylko jednym ze sposobów na jego asynchronizację. Jak wyjaśniono w Podsumowaniu w odpowiedzi, istnieją inne sposoby konwertowania połączeń synchronizacyjnych na połączenia asynchroniczne. – VS1
Zgodnie z tabelą wszystkie wzorce Asynchroniczne są oparte na wątkach (Zadania używają wątków w tle). – Mas