новые ключевые слова async/await на С# 5 выглядят очень многообещающими, но я прочитал статью о влиянии производительности на эти приложения, поскольку компилятор будет генерировать довольно сложный конечный автомат для методов async.
Асинхронное программирование с использованием этих ключевых слов намного проще, но так же хорошо, как сказать SocketAsyncEventArgs для сокетов?
Второй вопрос: являются ли асинхронные методы ввода-вывода, такие как Stream.WriteAsync, действительно асинхронными (Completion Ports on.NET или epoll/poll на Mono), или эти методы являются дешевыми оболочками для нажатия вызова записи в threadpool?
Третий вопрос: помимо SynchronizationContext приложения UI, существует ли способ реализовать какой-то контекст с сингл-потоком? Что-то вроде цикла событий, чтобы конечные задачи продолжались в основном потоке? Я обнаружил библиотеку Nito.AsyncEx, но я не совсем уверен, действительно ли это мне нужно.