Red de conocimiento informático - Conocimiento del nombre de dominio - Programación concurrente: síncrona, asíncrona, bloqueante, no bloqueante

Programación concurrente: síncrona, asíncrona, bloqueante, no bloqueante

Ejecución sincrónica: cuando un proceso está ejecutando una tarea, otro proceso debe esperar a que se complete su ejecución antes de poder continuar con la ejecución.

Ejecución asincrónica: cuando un proceso está ejecutando una tarea, Otro proceso puede continuar la ejecución sin esperar a que se complete su ejecución. Cuando regresa un mensaje, el sistema notificará a este último para procesarlo, lo que puede mejorar la eficiencia de la ejecución

La llamada sincronización significa que cuando una función. Se emite una llamada, la llamada no volverá hasta que se obtenga el resultado. Según esta definición, de hecho, la mayoría de las funciones se llaman sincrónicamente. Pero en términos generales, cuando hablamos de sincrónico y asincrónico, nos referimos específicamente a tareas que requieren la cooperación de otros componentes o que toman una cierta cantidad de tiempo para completarse.

El concepto de asíncrono es opuesto al de sincronización. Cuando se emite una llamada a una función asincrónica, la persona que llama no puede obtener el resultado de inmediato. Cuando se completa la función asincrónica, se notifica a la persona que llama mediante estado, notificación o devolución de llamada. Si la función asincrónica usa el estado para notificar, entonces la persona que llama debe verificarla cada cierto tiempo, lo cual es muy ineficiente (a algunas personas que son nuevas en la programación multiproceso siempre les gusta usar un bucle para verificar el valor de una determinada variable). En realidad, esto es un error muy grave). Si utiliza notificaciones, la eficiencia es muy alta, porque la función asincrónica casi no requiere operaciones adicionales. En cuanto a la función de devolución de llamada, en realidad no es muy diferente de la notificación.

Una llamada de bloqueo significa que el hilo actual se suspenderá (como una operación IO) antes de que se devuelva el resultado de la llamada. La función activará el hilo bloqueado solo después de obtener el resultado. Algunas personas pueden comparar el bloqueo de llamadas con las llamadas sincrónicas, pero en realidad son diferentes. Para llamadas sincrónicas, en muchos casos el hilo actual todavía está activo, pero lógicamente la función actual no regresa.

Los conceptos de no bloqueo y bloqueo se corresponden entre sí, lo que significa que regresará inmediatamente antes de que el resultado no se pueda obtener de inmediato. Al mismo tiempo, la función no bloqueará el hilo actual.

1. La sincronización y la asincronía se centran en el método de llamada de funciones/tareas: Sincronización significa que cuando un proceso inicia una llamada a una función (tarea), espera hasta que se complete la función (tarea), mientras el proceso continúa en estado activo. En el caso asíncrono, cuando un proceso inicia una llamada a una función (tarea), no espera a que la función regrese, sino que continúa ejecutándose. Cuando la función regresa, notifica al proceso que la tarea se completó a través de estado, notificaciones, eventos, etc

2. El bloqueo y el no bloqueo son para procesos o subprocesos: bloquear significa suspender el proceso cuando la solicitud no puede satisfacerse, mientras que el no bloqueo no bloqueará el proceso actual y los síncronos y asincrónicos no bloquearán. el proceso actual. El proceso/hilo siempre está activo