Ejecución asíncrona vs síncrona, ¿qué significa realmente? [cerrado]

1187

¿Cuál es la diferencia entre ejecución asíncrona y síncrona?

tush1r
fuente
... o ejecución "secuencial versus paralelo" ... aunque el verdadero paralelismo requiere múltiples núcleos, de lo contrario está lógicamente intercalado.
samis
8
Solía ​​confundir ambos términos, y la forma en que recordaba la diferencia es arrojar la primera "A" en " A JAX", que significa asíncrono, en JavaScript cuando haces solicitudes con AJAX en un bucle que no esperan entre sí o bloquear el proceso, ya que el navegador no quiere afectar la experiencia del usuario con un sitio web congelado, todas las solicitudes se envían casi al mismo tiempo sin esperar la respuesta de la solicitud anterior. Eso es asíncrono
Contador م

Respuestas:

1747

Cuando ejecutas algo sincrónicamente, esperas a que termine antes de pasar a otra tarea. Cuando ejecuta algo de forma asincrónica, puede pasar a otra tarea antes de que finalice.

Dicho esto, en el contexto de las computadoras esto se traduce en la ejecución de un proceso o tarea en otro "hilo". Un hilo es una serie de comandos (un bloque de código) que existe como una unidad de trabajo. El sistema operativo puede administrar varios subprocesos y asignar un subproceso a un subproceso ("segmento") de tiempo de procesador antes de cambiar a otro subproceso para darle el turno de hacer algo de trabajo. En esencia (perdón por el juego de palabras), un procesador puede simplemente ejecutar un comando, no tiene el concepto de hacer dos cosas al mismo tiempo. El sistema operativo simula esto mediante la asignación de segmentos de tiempo a diferentes subprocesos.

Ahora, si introduce múltiples núcleos / procesadores en la mezcla, entonces las cosas PUEDEN suceder al mismo tiempo. El sistema operativo puede asignar tiempo a un subproceso en el primer procesador, luego asignar el mismo bloque de tiempo a otro subproceso en un procesador diferente. Todo esto se trata de permitir que el sistema operativo administre la finalización de su tarea mientras puede continuar en su código y hacer otras cosas.

La programación asincrónica es un tema complicado debido a la semántica de cómo las cosas se unen cuando se pueden hacer al mismo tiempo. Existen numerosos artículos y libros sobre el tema; ¡echar un vistazo!

Adam Robinson
fuente
246
Lo que me confunde absolutamente es que sincrónico significa "al mismo tiempo", pero cuando se usa en el sentido anterior, significa secuencial y asíncrono significa "no al mismo tiempo" ... ?? ¿Alguien puede explicar este conflicto?
Damien Roche
45
@Zenph: En este contexto, nos preocupa un bloque completo de código. Sincrónico significa que el bloque se ejecuta al mismo tiempo (aunque sí, los componentes se ejecutan secuencialmente). Asíncrono significa que el bloque no se ejecuta todo al mismo tiempo.
Adam Robinson el
8
La ejecución asincrónica también ocurre cuando un programa envía un mensaje a una cola (como en los sistemas de mensajería, como ActiveMQ, WebSphere MQ, HornetQ, MSMQ, etc.). En este caso, la llamada asincrónica no implica programación multiproceso o manejo de concurrencia a nivel del sistema operativo.
Paulo Merson
287
Curiosamente, "Sincrónicamente" significa "usar el mismo reloj", de modo que cuando dos instrucciones son sincrónicas, usan el mismo reloj y deben suceder una tras otra. "Asíncrono" significa "no usar el mismo reloj", por lo que las instrucciones no tienen que ver con estar en sintonía. Es por eso que se ve al revés, el término no se refiere a la relación de instrucciones entre sí. Se refiere a cada relación de instrucciones con el reloj. Espero que ayude.
Tom Padilla
14
Los términos provienen de la ingeniería. en.wikipedia.org/wiki/Asynchronous_system
Tom Padilla
1153

Sincrónico / Asincrónico NO TIENE NADA QUE HACER CON HILOS MÚLTIPLES.

Sincrónico o Sincronizado significa "conectado" o "dependiente" de alguna manera. En otras palabras, dos tareas sincrónicas deben ser conscientes una de la otra, y una tarea debe ejecutarse de alguna manera que dependa de la otra, como esperar a comenzar hasta que la otra tarea se haya completado.
Asíncrono 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 (multihilo):

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

Asíncrono (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-->| 

Asíncrono (multiproceso):

 thread A ->     |<---A---->|
 thread B ----->     |<----B---------->| 
 thread C --------->     |<------C--------->|
  • Puntos inicial y final de las tareas A, B, C representadas por <, >caracteres.
  • Cortes de tiempo de CPU representados por barras verticales |

Técnicamente, el concepto de síncrono / asíncrono 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 encontrar dos o más tareas ejecutándose sincrónicamente en hilos separados ... No, el concepto de síncrono / asíncrono tiene que ver únicamente con si se puede iniciar una segunda tarea o no 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, en qué hardware, las tareas se ejecutan no es relevante. De hecho, para aclarar esto, he editado los gráficos para mostrar esto.


EJEMPLO ASINCRÓNICO:

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. Invertir 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 con frecuencia fueron) ejecutadas de forma asincrónica. No necesitan estar en hilos separados. Incluso una máquina con una CPU y solo un hilo de ejecución puede codificarse 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.. Mientras los tiempos de inicio y finalización de las tareas se superpongan (solo es posible si la salida de ninguno de ellos es necesaria como entradas para el otro), se ejecutarán de forma asincrónica, sin importar cuántos hilos estén en uso.

EJEMPLO SINCRÓNICO:

Cualquier proceso que consta de 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 síncrono o asíncrono.

Charles Bretana
fuente
92
por qué en el mundo las palabras significan cosas diferentes en la computadora ... siempre me dejan volver a esto ... del diccionario ... síncrono: ocurre al mismo tiempo. asíncrono: no ocurre al mismo tiempo.
Muhammad Umer
17
pero como se puede ver en las computadoras significa todo lo contrario
Muhammad Umer
55
¿Quizás la nomenclatura se basa en si el inicio de las tareas está "sincronizado" con la finalización de otras tareas?
Charles Bretana
11
@MuhammadUmer: en el mundo de la informática, ocurrir al mismo tiempo se llama concurrencia.
Roy Ling
55
En mi humilde opinión, estas imágenes no describen la ejecución síncrona vs asíncrona de tareas. Por ejemplo, la segunda imagen implica que las tareas asíncronas requieren varios hilos. En realidad no lo hace. Y que las tareas tienen que ejecutarse en paralelo, lo cual tampoco es un requisito. O bien, la imagen de "síncrono" muestra muy bien cómo las tareas se han enviado de forma asíncrona desde algún sitio de llamadas y ahora se ejecutan en un programador de tareas en serie;) En mi opinión, las imágenes son engañosas.
CouchDeveloper
642

En términos más simples:

SINCRÓNICO

Estás en una cola para obtener un boleto de cine. No puede obtener uno hasta que todos los que están frente a usted obtengan uno, y lo mismo se aplica a las personas que hacen cola detrás de usted.

ASINCRÓNICO

Estás en un restaurante con muchas otras personas. Pides tu comida. Otras personas también pueden pedir su comida, no tienen que esperar a que su comida sea cocinada y servida antes de que puedan ordenar. En la cocina, los trabajadores del restaurante cocinan, sirven y reciben pedidos continuamente. Las personas recibirán su comida tan pronto como se cocine.

themightysapien
fuente
10
Si alguien quiere manzanas en comparación con manzanas; si quisieras que el escenario del restaurante fuera sincrónico, entonces cuando pidas comida, todos los demás en el restaurante tendrían que esperar a que llegue tu comida antes de que puedan pedir su comida, etc. Ahora parece un escenario realmente tonto, Pero en el mundo de la informática, este escenario podría ser útil. Digamos que cada cliente no puede decidir lo que quiere y, en cambio, quiere ver lo que ordena el cliente anterior para decidir si quiere eso o no, entonces tiene sentido que tengan que esperar a que llegue la comida antes de ordenar.
Fonix
Solo para agregar ... podría ser para que las operaciones se ejecuten como en una cola en operaciones asincrónicas ... Pero eso no es obligatorio en absoluto.
Sreekanth Karumanaghat
55
ejemplo de la vida real muy simple
Manish
Para impulsar aún más su ejemplo, podrían considerar varias puertas para vender boletos. Por lo tanto, cada línea puede funcionar de forma asíncrona desde la otra línea, ¡pero sincrónicamente dentro de sí misma!
Saeed Ahadian
334

Explicación simple por analogía

Ejecución Sincrónica

Mi jefe es un hombre ocupado. Me dice que escriba el código. Yo le digo: bien. Comienzo y él me mira como un buitre, parado detrás de mí, fuera de mi hombro. Estoy como "Amigo, WTF: ¿por qué no vas y haces algo mientras termino esto?"

él dice: "No, estoy esperando aquí hasta que termines". Esto es sincrónico.

Ejecución asincrónica

El jefe me dice que lo haga, y en lugar de esperar allí mi trabajo, el jefe se va y hace otras tareas. Cuando termino mi trabajo, simplemente le informo a mi jefe y le digo: "¡Estoy HECHO!" Esta es la ejecución asincrónica.

(Sigue mi consejo: NUNCA trabajes con el jefe detrás de ti).

BKSpurgeon
fuente
29
Estoy HECHO ... es aún más divertido cuando tomas esto como una renuncia.
Daedric
91

La ejecución sincrónica significa que la ejecución ocurre en una sola serie. A->B->C->D. Si está llamando a esas rutinas, Ase ejecutará, luego finalizará, luego Bcomenzará, luego finalizará, luego Ccomenzará, etc.

Con la ejecución asíncrona , comienza una rutina y deja que se ejecute en segundo plano mientras comienza la siguiente, luego, en algún momento, diga "espere a que esto termine". Es más como:

Inicio A->B->C->D->Espera a Aque termine

La ventaja es que se puede ejecutar B, Cy oD mientras Aaún se está ejecutando (en segundo plano, en un hilo separado), por lo que puede aprovechar mejor sus recursos y tener menos "bloqueos" o "esperas".

Reed Copsey
fuente
@ Reed Copsey ...... Gracias por tan buena explicación ..... Solo quería más información sobre Async-Exec ...... Basado en su respuesta en Async Exec .... Inicie A-> B-> C-> D-> Espera a que A termine ... Entonces, todos A, B, C, D comienzan a la vez ...... y esperan a que A termine ... B solo terminará después de que A termine, y C después de B y así sucesivamente ......? ¿O puede B terminar primero y luego A puede terminar?
Devrath
8
@Devrath Las operaciones pueden finalizar en cualquier orden.
Reed Copsey
59

En pocas palabras, la sincronización se refiere a dos o más puntos de inicio y finalización de procesos , NO a sus ejecuciones . En este ejemplo, el punto final del Proceso A está sincronizado con el punto inicial del Proceso B:

SINCRÓNICO
   | -------- A -------- |
                     | -------- B -------- |

Los procesos asincrónicos, por otro lado, no tienen sus puntos de inicio y finalización sincronizados:

ASINCRÓNICO
   | -------- A -------- |
         | -------- B -------- |

Cuando el proceso A se superpone al proceso B, se ejecutan simultáneamente o sincrónica (definición del diccionario), de ahí la confusión.

ACTUALIZACIÓN: Charles Bretana mejoró su respuesta , por lo que esta respuesta ahora es solo una mnemónica simple (potencialmente simplificada).

entr0p3te
fuente
2
copia de la respuesta de Charles Bretana
Dinesh Saini
2
@DineshSaini: mi diagrama es ligeramente diferente. Para mayor claridad, coloqué A encima de B en ambos casos, enfatizando si sus puntos de inicio y finalización están sincronizados. El diagrama de Charles Bretana coloca los procesos sincrónicos en secuencia sin "sincronizar" nada. (Iba a comentar debajo de su respuesta para "mejorarlo", pero me di cuenta de que sería más fácil mostrar el nuevo diagrama).
entr0p3te
Grandes diagramas Creo que la forma de llamar al SYNC superior es que el inicio y el final de A en el diagrama superior son efectivamente al mismo tiempo, en el sentido de que ningún otro evento ha intervenido o podría haber interferido con la finalización de A. La sincronización puede referirse a una sola tarea de forma aislada, como agregar a los registros de la CPU, cuyo inicio y fin están tan cerca, como para ser efectivamente sincrónico en el diccionario.
Dean Radcliffe
55

Sincrónico significa que la persona que llama espera la respuesta o la finalización, asíncrona que la persona que llama continúa y una respuesta llega más tarde (si corresponde).

Como ejemplo:

    static void Main(string[] args)
    {
        Console.WriteLine("Before call");
        doSomething();
        Console.WriteLine("After call");
    }

    private static void doSomething()
    {
        Console.WriteLine("In call");
    }

Esto siempre superará:

Before call
In call
After call

Pero si tuviéramos que hacer algo asíncrono (múltiples formas de hacerlo), entonces el resultado podría ser:

Before call
After call
In call

Porque el método que realiza la llamada asincrónica continuaría inmediatamente con la siguiente línea de código. Digo "podría", porque el orden de ejecución no se puede garantizar con operaciones asíncronas. También podría ejecutarse como el original, dependiendo de los tiempos de hilo, etc.

Ragoczy
fuente
34

Creo que esta es una explicación un poco redonda, pero aún así se aclara con el ejemplo de la vida real.

Pequeño ejemplo:

Digamos que reproducir un audio implica tres pasos:

  1. Obtener la canción comprimida del disco duro
  2. Descomprime el audio.
  3. Reproduce el audio sin comprimir.

Si su reproductor de audio realiza el paso 1,2,3 secuencialmente para cada canción, entonces es sincrónico. Tendrá que esperar un tiempo para escuchar la canción hasta que la canción se recupere y descomprima.

Si su reproductor de audio realiza el paso 1, 2, 3 independientemente el uno del otro, entonces es asíncrono. es decir. Mientras reproduce el audio 1 (paso 3), si obtiene el audio 3 del disco duro en paralelo (paso 1) y descomprime el audio 2 en paralelo. (paso 2) Terminarás escuchando la canción sin esperar mucho para buscar y descomprimir.

aJ.
fuente
32

Las operaciones de sincronización y asincronización se tratan de ejecutar una nueva tarea en relación con la tarea actual. Dos tareas en una mesa: tarea actual y una nueva tarea

Sincrónico (bloqueo): implica que las tareas se ejecutarán una por una. La siguiente tarea se inicia solo después de que finaliza su tarea anterior. Task 2no se inicia hasta que Task 1se termina

Asíncrono (sin bloqueo): implica que la tarea devuelve el control inmediatamente con la promesa de ejecutar un código y notificar el resultado más tarde (por ejemplo, devolución de llamada, función). Task 2se ejecuta incluso si Task 1no está terminado

Así que responda sobre sincronización y asíncrono: en iOS , en Android

yoAlex5
fuente
¿El diagrama en el ejemplo de subprocesos múltiples sincrónicos parece representar hilos que se ejecutan simultáneamente?
samis
@ sαmosΛris puede considerar Hilo como eje X que indica la línea de tiempo
yoAlex5
El eje x se usa convencionalmente como una dimensión espacial; El eje t para el tiempo: una distinción importante que se encuentra en el análisis de la complejidad del algoritmo.
samis
23

Simplemente dijo que la ejecución asincrónica está haciendo cosas en segundo plano.

Por ejemplo, si desea descargar un archivo de Internet, puede usar una función síncrona para hacerlo, pero bloqueará su hilo hasta que el archivo termine de descargarse. Esto puede hacer que su aplicación no responda a ninguna entrada del usuario.

En su lugar, puede descargar el archivo en segundo plano utilizando un método asincrónico. En este caso, la función de descarga vuelve inmediatamente y la ejecución del programa continúa normalmente. Todas las operaciones de descarga se realizan en segundo plano y su programa será notificado cuando haya terminado.

Michał Piaskowski
fuente
1
¿Cómo va a ser tu ejemplo más rápido? Al final, no puede reproducir el archivo hasta que termine el período de descarga. ¿Puedes explicar? Supongo que no entiendo asíncrono entonces y probablemente sea yo, pero ¿qué estaría haciendo ese otro paso o proceso mientras se ejecuta el otro proceso (obtener la descarga)? Quiero decir, ¿qué puedes hacer hasta que recibas ese proceso asíncrono de nuevo (descarga) en tu aplicación ... No lo entiendo. Entonces, ¿qué, todavía tendría que mostrarle al usuario algún tipo de mecanismo de espera sin importar qué en cualquier situación?
PositiveGuy
44
No tiene que ser más rápido. Se trata de no bloquear el hilo principal, para que pueda procesar otro tipo de entrada del usuario. Por ejemplo, el usuario puede querer cancelar la descarga o comenzar a descargar otro archivo simultáneamente.
Michał Piaskowski
19

Como un ejemplo realmente simple,

SINCRÓNICO

Imagine a 3 estudiantes de la escuela instruidos para correr una carrera de relevos en una carretera.

El primer estudiante corre su distancia dada, se detiene y pasa el testigo al segundo. Nadie más ha comenzado a correr.

1------>
        2.
                3.

Cuando la segunda estudiante recupera el bastón, comienza a correr su distancia dada.

      1.
        2------>
                3.

La segunda estudiante se desató el cordón del zapato. Ahora se ha detenido y atado de nuevo. Debido a esto, el tiempo final del segundo se ha extendido y el tiempo de inicio del tercero se ha retrasado.

      1.
        --2.--->
                3.

Este patrón continúa hasta que el 3º recupera el testigo del 2º y termina la carrera.

ASINCRÓNICO

Imagínese 10 personas al azar caminando por el mismo camino. No están en una cola, por supuesto, simplemente caminan al azar en diferentes lugares en el camino en diferentes ritmos.

El cordón de la segunda persona se desató. Se detuvo para atarlo de nuevo.

Pero nadie está esperando que ella lo ató. Todos los demás siguen caminando de la misma manera que lo hicieron antes, en el mismo ritmo que ellos.

10-->    9-->
   8--> 7-->   6-->
 5-->     4-->
1-->   2.    3-->
Dasun Nirmitha
fuente
18

Creé un gif para explicar esto, espero ser útil: mira, la línea 3 es asíncrona y otras son sincrónicas. todas las líneas antes de la línea 3 deben esperar hasta que la línea termine su trabajo, pero debido a que la línea 3 es asíncrona, la siguiente línea (línea 4), no espere a la línea 3, pero la línea 5 debe esperar a que la línea 4 termine su trabajo, y la línea 6 debería esperar a la línea 5 y 7 a la 6, porque la línea 4,5,6,7 no es asíncrona. la línea 3 es asíncrona y otras son sincrónicas

Abolfazl Miadian
fuente
12

Al ejecutar una secuencia como: a> b> c> d>, si tenemos una falla en el medio de la ejecución como:

a
b
c
fail

Luego reiniciamos desde el principio:

a
b
c
d

esto es sincrónico

Sin embargo, si tenemos la misma secuencia para ejecutar: a> b> c> d>, y tenemos una falla en el medio:

a
b
c
fail

... pero en lugar de reiniciar desde el principio, reiniciamos desde el punto de falla:

c
d

... esto se conoce como asíncrono.

mohamed tharik
fuente
1
¿podría ser más preciso en lo que entendemos por proporcionar más contexto a los ejemplos
krichard
55
Esta respuesta simplemente no es correcta.
Marqués de Lorne
7

Estás confundiendo Sincrónico con Paralelo vs Serie. Sincrónico significa todo al mismo tiempo. Medios sincronizados relacionados entre sí que pueden significar en serie o en un intervalo fijo. Mientras el programa está haciendo todo, se ejecuta en serie. Obtenga un diccionario ... es por eso que tenemos té dulce. Tienes té o té endulzado.

Joe
fuente
3
En realidad, "sincronizado" se refiere a la relación entre las instrucciones y el reloj. NO la relación entre las instrucciones mismas. Es por eso que se ve hacia atrás "sincrónico" en realidad significa uno tras otro: pero las instrucciones están SINCRONIZADAS en el reloj. "Asíncrono" significa "en cualquier momento, no me importa cuándo suceda": las instrucciones no necesitan sincronizarse con el reloj. Sí, hay una definición de diccionario, pero debe asegurarse de definir la situación correcta.
Tom Padilla
1
Sincrónico no significa 'todo al mismo tiempo' en informática. Estás confundiendo la sincronización con sincronía y 'paralelo versus serie' con té y té dulce. La respuesta no tiene ningún sentido.
Marqués de Lorne
7

Sincrónico básicamente significa que solo puede ejecutar una cosa a la vez. Asíncrono significa que puede ejecutar varias cosas a la vez y no tiene que terminar de ejecutar la cosa actual para pasar a la siguiente.

Miguel
fuente
¿No se ejecutan varias cosas al mismo tiempo llamadas Multithreading en lugar de asincrónicas?
Sreekanth Karumanaghat
7

Use un ejemplo de instrucciones para preparar un desayuno.

  1. Verter una taza de café.
  2. Calienta una sartén, luego fríe dos huevos.
  3. Freír tres rebanadas de tocino.
  4. Tostar dos pedazos de pan.
  5. Agregue mantequilla y mermelada a la tostada.
  6. Vierte un vaso de jugo de naranja.

Si tienes experiencia cocinando, ejecutarías esas instrucciones de forma asincrónica. comenzaría a calentar la sartén para huevos, luego comenzaría el tocino. Pusiste el pan en la tostadora y luego comenzaste los huevos. En cada paso del proceso, comenzaría una tarea y luego centraría su atención en las tareas que están listas para su atención.

Preparar el desayuno es un buen ejemplo de trabajo asincrónico que no es paralelo. Una persona (o hilo) puede manejar todas estas tareas. Continuando con la analogía del desayuno, una persona puede preparar el desayuno de forma asincrónica iniciando la siguiente tarea antes de que se complete la primera. La cocción progresa ya sea que alguien la esté mirando o no. Tan pronto como comience a calentar la sartén para los huevos, puede comenzar a freír el tocino. Una vez que comience el tocino, puede poner el pan en la tostadora.

Para un algoritmo paralelo, necesitaría múltiples cocineros (o hilos). Uno haría los huevos, uno el tocino, etc. Cada uno se centraría en esa única tarea. Cada cocinero (o hilo) se bloquearía sincrónicamente a la espera de que el tocino esté listo para voltearse, o que la tostada estalle.

Referencia de conceptos de programación asincrónica

Hla Min Swe
fuente
4

Una operación sincrónica hace su trabajo antes de regresar a la persona que llama.

Una operación asincrónica realiza (la mayoría o la totalidad) su trabajo después de regresar a la persona que llama.

Maxim Eliseev
fuente
El enlace está muerto.
HopefulHelpful
1

En lo que respecta a la definición " al mismo tiempo " de ejecución sincrónica (que a veces es confusa), aquí hay una buena manera de entenderla:

Ejecución síncrona : todas las tareas dentro de un bloque de código se ejecutan todas al mismo tiempo.

Ejecución asincrónica : no todas las tareas dentro de un bloque de código se ejecutan al mismo tiempo.

docta_faustus
fuente
Estaría más de acuerdo con esto si dijera 'efectivamente al mismo tiempo' o 'con fines prácticos' ... Creo que el voto negativo fue por la afirmación inexacta de que las cosas realmente se están haciendo al mismo tiempo.
Dean Radcliffe
1

Creo que una buena forma de pensar es en una carrera de relevos clásica.

Sincrónico : procesa como miembros del mismo equipo, no se ejecutarán hasta que reciban el testigo (final de la ejecución del proceso / corredor anterior) y, sin embargo, todos actúan en sincronía entre sí.

Asíncrono : donde los procesos como miembros de diferentes equipos en la misma pista de carrera de relevos, correrán y se detendrán, asincrónicos entre sí, pero dentro de la misma carrera (ejecución general del programa).

¿Tiene sentido?

Sharif
fuente
1

Una definición diferente en inglés de Sincronizar está aquí

Coordinar; combinar.

Creo que es una mejor definición que "Suceder al mismo tiempo". Esa también es una definición, pero no creo que sea la que se ajuste a la forma en que se usa en informática.

Por lo tanto, una tarea asincrónica no se coordina con otras tareas, mientras que una tarea sincrónica se coordina con otras tareas, por lo que una finaliza antes de que comience otra.

Cómo se logra eso es una pregunta diferente.

Greg Gum
fuente
0

Sincrónico significa que se ejecutará la ejecución de forma de cola una por una tarea. Suponga que solo hay un vehículo que debe compartirse entre amigos para llegar a su destino, uno por uno será compartido.
En caso asíncrono, cada amigo puede alquilar un vehículo y llegar a su destino.

Rohit
fuente
0

Sí, sincrónico significa al mismo tiempo, literalmente, significa trabajar todos juntos. múltiples humanos / objetos en el mundo pueden hacer varias cosas al mismo tiempo, pero si miramos a la computadora, dice sincrónico significa que los procesos trabajan juntos, lo que significa que los procesos dependen del retorno de los demás y es por eso que se ejecutan uno tras otro en la secuencia adecuada. Mientras que asíncrono significa que los procesos no funcionan juntos, pueden funcionar al mismo tiempo (si están en subprocesos múltiples), pero funcionan de forma independiente.

Saptarshi
fuente