in

Ejecución asíncrona vs síncrona, ¿cuál es la principal diferencia?

apple touch icon@2

Synchronous / Asynchronous NO TIENE NADA QUE VER CON MULTI-THREADING.

Sincrónico o Sincronizado significa «conectado» o «dependiente» de alguna manera. En otras palabras, dos tareas síncronas deben conocerse entre sí, y una tarea debe ejecutarse de alguna manera que dependa de la otra, como esperar para comenzar hasta que se complete la otra tarea.
Asincrónico significa que son totalmente independientes y ninguno debe considerar al otro de ninguna manera, ya sea en la iniciación o en la ejecución.

Sincrónico (un hilo):

1 thread ->   |<---A---->||<----B---------->||<------C----->|

Sincrónico (multiproceso):

thread A -> |<---A---->|   
                          
thread B ------------>   ->|<----B---------->|   
                                                 
thread C ---------------------------------->   ->|<------C----->| 

Asincrónico (un hilo):

         A-Start ------------------------------------------ A-End   
           | B-Start -----------------------------------------|--- B-End   
           |    |      C-Start ------------------- C-End      |      |   
           |    |       |                           |         |      |
           V    V       V                           V         V      V      
1 thread->|<-A-|<--B---|<-C-|-A-|-C-|--A--|-B-|--C-->|---A---->|--B-->| 

Asincrónico (multihilo):

 thread A ->     |<---A---->|
 thread B ----->     |<----B---------->| 
 thread C --------->     |<------C--------->|
  • Puntos de inicio y finalización de las tareas A, B, C representadas por <, > caracteres.
  • Porciones de tiempo de CPU representadas por barras verticales |

Técnicamente, el concepto de sincrónico / asincrónico realmente no tiene nada que ver con hilos. Aunque, en general, es inusual encontrar tareas asincrónicas que se ejecutan en el mismo hilo, es posible (ver ejemplos a continuación) y es común para encontrar dos o más tareas que se ejecutan sincrónicamente en separar hilos … No, el concepto de síncrono / asíncrono tiene que ver solamente con si se puede iniciar o no una segunda tarea o una tarea posterior antes de que se complete la otra (primera) tarea, o si debe esperar. Eso es todo. ¿Qué hilo (o hilos), o procesos, o CPU, o de hecho, qué hardware, la tarea[s] se ejecutan en no es relevante. De hecho, para aclarar este punto, he editado los gráficos para mostrar esto.


EJEMPLO ASINCRONO:

Al resolver muchos problemas de ingeniería, el software está diseñado para dividir el problema general en múltiples tareas individuales y luego ejecutarlas de forma asincrónica. La inversión de una matriz o un problema de análisis de elementos finitos son buenos ejemplos. En informática, ordenar una lista es un ejemplo. La rutina de clasificación rápida, por ejemplo, divide la lista en dos listas y realiza una clasificación rápida en cada una de ellas, llamándose a sí misma (clasificación rápida) de forma recursiva. En los dos ejemplos anteriores, las dos tareas pueden (y a menudo se ejecutaron) de forma asincrónica. No es necesario que estén en subprocesos separados. Incluso una máquina con una CPU y solo un subproceso de ejecución se puede codificar para iniciar el procesamiento de una segunda tarea antes de que se complete la primera. El único criterio es que los resultados de una tarea no son necesarios como entradas para la otra tarea. Siempre que las horas de inicio y finalización de las tareas se superpongan (solo es posible si la salida de ninguna es necesaria como entradas para la otra), se ejecutan de forma asincrónica, sin importar cuántos subprocesos estén en uso.

EJEMPLO SINCRÓNICO:

Cualquier proceso que consista en múltiples tareas donde las tareas deben ejecutarse en secuencia, pero una debe ejecutarse en otra máquina (Obtener y / o actualizar datos, obtener una cotización de acciones del servicio financiero, etc.). Si está en una máquina separada, está en un hilo separado, ya sea sincrónico o asincrónico.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Java – Expresiones regulares

gfg 200x200 min

Encuentra el promedio de una lista en Python