¿Cuál es la diferencia entre síncrono vs asíncrono y bloqueo vs no bloqueo?

Sincrónico simplemente significa que las cosas siguen en orden. Realiza el paso 1, luego realiza el paso 2, luego realiza el paso 3. El paso 3 nunca ocurre antes del paso 2 en este proceso sincrónico. El paso 2 debe concluir antes de comenzar el paso 3.

Asíncrono (no sincrónico) significa que los pasos del proceso pueden ocurrir al mismo tiempo, fuera de orden o al menos antes de que se completen otros pasos.

Usemos una analogía. Digamos que tiene una lista de 50 cosas que necesita comprar en la tienda de comestibles. Normalmente, vas solo, obtienes un carrito y comienzas a trabajar en la tienda recogiendo las 50 cosas, una a la vez, y poniéndolas en el carrito. Cuando termine, vaya a la caja y el verificador revisa los artículos que tiene en su carrito de uno en uno, los pasa por un escáner y coloca los artículos en bolsas. Luego llevas las bolsas a tu auto y las pones en el maletero. Hasta ahora todo bien, todo esto es sincrónico y, por lo tanto, cada paso del proceso es bloqueante .

Ahora, comencemos con la misma premisa, sin embargo, esta vez tienes 10 de tus amigos para ayudarte. Usted toma su lista de 50 artículos y los coloca en una hoja de papel por artículo. Cada uno de tus 10 amigos recibe su propio carrito y, llegando a ti, cada uno recibe un pedazo de papel. Asincrónicamente , cada uno de tus amigos va a buscar el artículo en su papel, los pone en su carrito y luego regresa por otra hoja de papel. Cualquier persona puede viajar solo unos pocos pies para obtener este artículo, o puede viajar por toda la tienda, por lo que la persona 1, al final, puede haber recuperado 15 artículos, la persona 2 solo 3, etc. Tan pronto como usted se queda sin artículos de papel, cuando una persona regresa para obtener un nuevo documento, los dirige a uno de los 3 carriles de pago (solo tienen tres empleados trabajando hoy en el pago). Ahora, cada carril todavía tiene una persona que ejecuta la caja registradora, por lo que su proceso sigue siendo sincrónico. Cada carril manejará un número diferente de carros (dependiendo de cuántos artículos haya en cada carro). Los carriles de pago están bloqueados porque si la persona que realiza el pago ya está procesando un carrito, todos los demás carritos en ese carril tendrán que esperar para acceder al pago.

Tan pronto como hayas terminado de pasar los pedazos de papel, sales a tu auto y abres el maletero esperando que llegue la comida. Ahora es un proceso de bloqueo , ya que solo puede procesar un carro a la vez mientras coloca los artículos en el maletero. Tan pronto como haya puesto el contenido de una canasta en su maletero, el amigo guarda su carrito y sale del estacionamiento.

Ahora que he pasado por esta analogía, pongamos algunos términos a lo que sucedió. Cuando llegaste a la tienda tenías una lista de artículos que necesitabas. Esta sería una cola de bloqueo (LIFO, FIFO, no importa), está bloqueando porque debe garantizar que no se extraigan elementos de la cola dos veces, y es posible que lleguen dos amigos para obtener el siguiente elemento de la cola y cada uno tiene que esperar a cualquiera que llegue primero. Es una cola y no solo una lista porque debe eliminar cada elemento de la lista una vez que sabe que un amigo lo ha tomado.

Cada uno de tus amigos sería un proceso o un hilo (un tipo de proceso ligero). Cada una de las cestas también es una cola, en la que cada hilo inserta elementos a medida que se extraen de los estantes. Los carriles de pago también son hilos o procesos, ya que procesan el contenido de las cestas. Están bloqueando el hecho de que no hay suficiente para manejar los 10 procesos de tus amigos a la vez (y se bloquearán porque lleva mucho menos tiempo ingresar a su cola que procesar su cola).

Al final todo termina en un punto, la cajuela de tu auto. Esto se llamaría “unir” los hilos. Es un proceso en el que espera a que se completen todos los hilos (llegue a su automóvil después de salir) antes de poder pasar al siguiente paso (tal vez llevar los comestibles a casa, etc.). Lo hojeé, pero también te habrías unido a todos los hilos en el momento en que te quedaste sin pedazos de papel, ya que querrás asegurarte de haber redirigido todos los procesos a las líneas de pago (y que todos terminaron y hay no un amigo sentado en el suelo en la sección de helados pigging). También hay condiciones de error, condiciones de carrera y otras cosas que tendrá que comprender para realizar correctamente los procesos asincrónicos, que no he cubierto en absoluto.

En general, en un entorno de subprocesos múltiples, tenemos una operación de bloqueo cuando el subproceso se pone en estado de suspensión y esperamos la acción hasta el éxito o el fracaso.

En este caso, la ejecución del hilo es síncrona porque el fragmento de código no continuará hasta que el hilo termine su trabajo. En este caso, con alta probabilidad, los pasos se realizan en el mismo hilo. Se puede hacer síncrono entre dos hilos y el hilo de invocación esperará el final del nuevo hilo generado.

En una operación sin bloqueo, el subproceso que invoca no esperará la ejecución de otro subproceso, por ejemplo, este es el comportamiento predeterminado de la máquina virtual Java cuando genera un nuevo subproceso. Otro ejemplo: el motor de JavaScript le permite invocar un servidor http con una operación sin bloqueo utilizando la llamada asincrónica XHR.

En este escenario, tiene asíncrono, se usa principalmente en entornos de intercambio de mensajes o en lenguaje de programación controlado por eventos. En general, los pasos de un asíncrono contiene llamadas sin bloqueo.

Sincrónico significa que una respuesta está disponible de inmediato, es decir … la llamada y la respuesta están sincronizadas. Asíncrono significa que su respuesta llegará en un momento indeterminado.

El bloqueo significa que su socket, por ejemplo, esperará una solicitud. Esencialmente, ese hilo está bloqueado hasta que entra una solicitud. Sin bloqueo … es lo opuesto a eso.

More Interesting

Cómo cambiar el nombre de usuario en la computadora

¿Es generalmente bueno seguir poniendo una PC en modo de suspensión en lugar de apagarla después de terminar el trabajo?

¿Se puede construir una plataforma de juegos Mac? ¿Por qué o por qué no?

¿Hay alguna ventaja del Lenovo T450 sobre el MacBook Air de 13 '?

Suponiendo el mismo procesador (i7 5500u), ¿preferiría una Radeon R7 M270 de 4GB en una Dell o una NVIDIA 940M de 2GB en una HP?

¿Puedo usar una cámara web como mouse usando el mismo principio que usa un mouse óptico? ¿Qué condiciones se requieren?

¿Qué debo comprar, Dell Inspiron 15 7000 7560 (i7 7th gen) o HP 15-cc100tx (i7 8th gen)?

¿Cuáles son las deficiencias de las computadoras portátiles ASUS?

¿Cuál es la forma más rentable de configurar una computadora de acceso remoto?

¿Cómo hago que la computadora reconozca varios monitores?

¿Qué computadora portátil es mejor? Sony Vaio f15318 que tiene la especificación: procesador Intel Core i5 de cuarta generación, 4 GB de RAM, disco duro de 500 GB, tarjeta gráfica NVIDIA de 1 GB. ¿O Lenovo Ideapad Z500 que tiene la especificación: procesador Intel Core i5 de tercera generación, 6 GB de RAM, disco duro de 1 TB, tarjeta gráfica NVIDIA de 2 GB?

¿Es suficiente un procesador quad core de 1 Ghz para un teléfono inteligente?

¿Cómo funciona específicamente el proceso de fragmentación para hacer que mi computadora portátil funcione más rápido?

¿Cuándo es necesario apagar el teclado numérico del teclado de la computadora?

¿Cómo podría utilizar efectivamente nitrógeno líquido para enfriar un sistema informático?