Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Qué mecanismos disfrutan los datos de programación concurrente ***? Cómo garantizar la sincronización de datos

¿Qué mecanismos disfrutan los datos de programación concurrente ***? Cómo garantizar la sincronización de datos

1. Concurrencia multiproceso

Se usa más comúnmente en UNIX tradicional. Se generan diferentes subprocesos para cada instancia separada de lógica de negocios para el procesamiento. Un ejemplo de programa típico es dividir varios procesos secundarios para procesar múltiples conexiones de clientes TCP diferentes. Cada cliente corresponde a un proceso secundario independiente. Una vez que el proceso secundario sale, el proceso principal reclama sus recursos.

Ventajas: los espacios de direcciones entre procesos están aislados entre sí y toda la aplicación no se bloqueará debido a algunas operaciones incorrectas.

El código de lógica empresarial es simple y claro, el código es directo y no existe una lógica de estado asincrónica complicada.

Desventajas: si necesita interactuar entre procesos o compartir datos, debe utilizar IPC.

2. Concurrencia multiproceso

Se utiliza muy comúnmente en los sistemas operativos modernos Windows y Linux. Para diferentes instancias de lógica empresarial separada, se crean varios subprocesos en el mismo proceso. concurrencia. Un ejemplo típico es que se procesan varios clientes TCP en el mismo proceso y cada cliente interactúa con un hilo separado, compartiendo todos los recursos del mismo proceso.

Ventajas: El espacio de proceso es compartido y es muy fácil acceder a los datos compartidos.

No hay una sobrecarga excesiva de espacio de proceso, el cambio de contexto de subprocesos es rápido y la eficiencia de la programación es mayor que la de múltiples procesos.

El código de lógica empresarial es simple y claro, el código es directo y no existe una lógica de estado asincrónica complicada.

Desventajas: El trabajo de mantener subprocesos lo maneja el código interno del proceso, como el número de subprocesos, lo que añade cierta complejidad.

La relación de competencia entre subprocesos por datos compartidos es compleja y es necesario abordar los problemas de sincronización y bloqueo.

3. Multiplexación de IO

Es decir, controlar múltiples lógicas de negocios asincrónicas en un solo hilo, es decir, el procesamiento de estado basado en eventos de múltiples negocios, generalmente mensajes en Windows Mecanismo de procesamiento. así como procesamiento de semáforos en Linux. Se pueden procesar una variedad de lógicas de negocios diferentes en un solo subproceso, como salida del usuario, clics del mouse, redibujado de ventanas y entrada de red al mismo tiempo.

Ventajas: la lógica de todas las instancias comerciales se procesa en un solo subproceso, lo que elimina los errores de sincronización del código. En teoría, no hay problemas de competencia ni puntos muertos.

No hay una sobrecarga excesiva de espacio de proceso, ni problemas de cambio de contexto y una alta utilización de la CPU.

El espacio de proceso es compartido y es muy fácil acceder a los datos compartidos.

Desventajas:

Los subprocesos necesitan administrar las máquinas de estado de múltiples instancias diferentes y manejar correctamente la migración de diferentes estados causada por los eventos correspondientes.

Cuando hay muchos tipos de negocios, se requiere código humano para controlar múltiples máquinas de estados.

Más puntos de concurrencia dan como resultado más estados y una granularidad de gestión más precisa. El código de lógica empresarial no es secuencial y es difícil de mantener y comprender.

Demasiados estados asincrónicos hacen que la gestión de recursos sea más compleja y propensa a fugas de recursos.