usar sirve que puede programación para metodos con await asíncrona asincronos c# asynchronous

c# - sirve - ¿Qué significa que un método sea asíncrono?



para que sirve task c# (4)

¿Qué son los métodos asíncronos?

Los métodos asíncronos entran en discusión cuando estamos hablando de operaciones potencialmente largas. Por lo general, necesitamos que se complete esta operación para continuar de manera significativa la ejecución del programa, pero no queremos "pausar" hasta que se complete la operación (porque la pausa puede significar, por ejemplo, que la IU deja de responder, lo que es claramente indeseable).

Un método asíncrono es uno que llamamos para iniciar la operación prolongada. El método debe hacer lo que necesita para iniciar la operación y devolver "muy rápidamente" para que no haya retrasos en el procesamiento.

Los métodos asíncronos suelen devolver un token que la persona que llama puede usar para consultar si la operación se ha completado todavía y cuál fue su resultado. En algunos casos toman una devolución de llamada (delegado) como argumento; cuando finaliza la operación, se invoca la devolución de llamada para indicar al llamante que sus resultados están listos y devolverlos. This es una firma de devolución de llamada utilizada comúnmente, aunque, por supuesto, en general, la devolución de llamada puede parecerse a cualquier cosa.

Entonces, ¿quién ejecuta realmente la operación larga?

Dije anteriormente que un método asíncrono inicia una operación de longitud, pero ¿qué significa "inicio" en este contexto? Dado que el método vuelve inmediatamente, ¿dónde se está realizando el trabajo real?

En el caso general, un subproceso de ejecución debe vigilar el proceso. Dado que no es el hilo que llama al método asíncrono el que se detiene, ¿quién lo hace? La respuesta es, un subproceso seleccionado para este propósito del grupo de subprocesos administrados .

¿Cuál es la conexión con el enhebrado?

En este contexto, mi interpretación de "subprocesos" es simplemente que gire explícitamente un hilo propio y lo delegue para ejecutar la tarea en cuestión de forma síncrona . Este subproceso se bloqueará durante un tiempo y, presumiblemente, señalizará su subproceso "principal" (que es libre de continuar ejecutando) cuando se complete la operación.

Este subproceso de trabajo designado podría sacarse del grupo de subprocesos (tenga cuidado: ¡no se recomienda realizar un proceso muy largo en un subproceso de un grupo de subprocesos) o puede ser uno que haya comenzado solo con este propósito.

Qué es un método asíncrono. Creo que lo sé, pero lo sigo confundiendo con el paralelismo. No estoy seguro de cuál es la diferencia entre un método asíncrono y qué es el paralelismo.

Además, ¿cuál es la diferencia entre usar clases de subprocesos y clases asíncronas?

EDITAR

Sería útil algún código que demuestre la diferencia entre async, threading y paralelismo.


Diga que necesita limpiar la casa, cocinar la cena y acostar a los niños.

Sincrónico:

Usted limpia la casa, luego cocina la cena y luego acuesta a los niños.

Paralela:

Usted contrata a 3 personas para limpiar la casa, cocinar la cena y acostar a los niños. Pero no confías en ellos, así que mantén un rol de supervisión, examínalos y espera a que terminen. Solo cuando todos han terminado se les paga.

Asincrónico:

Usted un niño para limpiar la casa y otro para cocinar la cena. Cuando cada uno ha terminado sus tareas, se acuestan en la cama, mientras usted pone los pies en alto con una copa de vino frente al televisor.


En primer lugar, ¿qué es un método y qué es un hilo? Un método es una unidad de trabajo que (1) realiza un efecto secundario útil, como escribir en un archivo, o (2) calcula un resultado, como hacer un mapa de bits de un fractal. Un hilo es un trabajador que realiza ese trabajo.

Un método es sincrónico si para utilizar el método (para obtener el efecto secundario o el resultado), su hilo no debe hacer nada más desde el punto en el que solicita que se realice el trabajo hasta el punto en que se termina.

Un método es asíncrono si su hilo le dice al método que necesita que el trabajo se realice, y el método dice "OK, lo haré y lo llamaré cuando haya terminado".

Por lo general, la forma en que un método asíncrono hace eso es que genera otro trabajador : toma un hilo de la agrupación. Esto es particularmente cierto si el método necesita hacer un uso intensivo de una CPU. Pero no siempre; no hay ningún requisito de que un método asíncrono haga girar otro hilo.

¿Tiene sentido?


Primero, debe comprender que si desea que el paralelismo sea necesario, toda la estructura debe ser paralela, quiero decir que si tiene un método asíncrono necesita una llamada asíncrona. En los servicios web o en la web, los métodos asíncronos se pueden llamar (solo una de las muchas formas) con AJAX, que es asíncrono. En un método, puede tener varios subprocesos, esta es la diferencia clave entre los métodos asíncronos y los subprocesos múltiples. Y la principal: la diferencia entre un método estándar y un método asíncrono es que si realiza 2 llamadas a un método estándar al mismo tiempo al mismo controlador con un llamador asíncrono (como AJAX), la segunda llamada comenzará cuando la primera La llamada ya se ha completado, si los métodos a los que llamó eran asíncronos, ambas llamadas comenzarán al mismo tiempo, con servidores de varios núcleos puede alcanzar el doble de velocidad (2 llamadas). La velocidad del paralelismo se mide por esta law .