tpl threading thread programming parallel net examples .net performance concurrency

.net - threading - tpl c#



¿Cómo utiliza.NET IO Threads o IO Completion Ports? (1)

Lo más probable es que no tenga que hacer nada si ya está utilizando los métodos asíncronos. Dependiendo de la tecnología que esté utilizando para la llamada al servicio web, en última instancia, se desplegará en la API de Win32 para realizar la llamada a fin de obtener bytes de la red, y con ese fin, utilizará la finalización de E / S Puertos para manejar llamadas asincrónicas.

La premisa básica detrás de los puertos de terminación de E / S es que cuando se esperan operaciones de E / S, hay un grupo de subprocesos que se espera cuando se completan las operaciones de E / S (suponiendo que se haya registrado para usar puertos de E / S de finalización). Cuando finaliza su operación registrada, el hilo del grupo de subprocesos de puerto de finalización de E / S se utiliza para gestionar la devolución de llamada.

Por supuesto, después de llamar al puerto de finalización de E / S, su hilo puede avanzar para hacer más trabajo, o finalizar, la elección depende de usted.

Lo siguiente debería ayudar a describirlo más:

Puertos de finalización de E / S:

http://msdn.microsoft.com/en-us/library/aa365198(VS.85).aspx

Dentro de los puertos de finalización de E / S (WayBack Machine):

https://web.archive.org/web/20101101112358/http://doc.sch130.nsc.ru/www.sysinternals.com/ntw2k/info/comport.shtml

Tenemos una aplicación .NET que hace varias llamadas concurrentes a varios servicios web, recopila sus respuestas y luego hace algunos cálculos de esas respuestas. Al intentar obtener un rendimiento adicional, he estado investigando el uso de enfoques que hacen uso del enrutamiento IO de .NET mediante el uso de puertos de terminación de IO. He leído varios recursos, incluido el reciente libro de Joe Duffy, Programación concurrente en Windows, y mientras "obtengo" su utilidad, no estoy muy claro en cuanto a su comportamiento dentro de .NET y estoy buscando una explicación concisa.