¿Async / await para aplicaciones de servidor de alto rendimiento?

Las nuevas palabras clave async / await en C # 5 parecen muy prometedoras, pero leí un artículo sobre el impacto en el rendimiento de esas aplicaciones, ya que el compilador generará una máquina de estados bastante compleja para los métodos asíncronos.

La programación asíncrona con estas palabras clave es mucho más fácil, pero ¿es tan bueno como decir SocketAsyncEventArgs para Sockets?

Segunda pregunta: ¿Son los métodos de E / S asíncronos como Stream.WriteAsync realmente asíncronos (Puertos de finalización en .Net o epoll / poll en Mono) o estos envoltorios son baratos para enviar una llamada de escritura a un conjunto de hilos?

Tercera pregunta: Además del SynchronizationContext de una aplicación de UI, ¿hay alguna forma de implementar algún tipo de contexto de subprocesos sinlge? ¿Algo así como un bucle de eventos para que las tareas terminadas continúen en el hilo principal? Descubrí la biblioteca Nito.AsyncEx, pero no estoy seguro de si esto es lo que necesito o no.

Respuestas a la pregunta(2)

Su respuesta a la pregunta