¿Cuáles son los mecanismos para compartir datos en la programación concurrente? Cómo garantizar la sincronización de datos
Generalmente se utiliza en UNIX tradicional para generar diferentes subprocesos para cada instancia de lógica de negocios para su procesamiento. Un ejemplo típico de un programa es conectar varios clientes TCP diferentes. fork proporciona múltiples subprocesos para el procesamiento y cada cliente corresponde a un subproceso separado. Una vez que el proceso hijo sale, el proceso padre reclamará sus recursos.
Ventajas: Los espacios de direcciones entre procesos están aislados entre sí y toda la aplicación no se bloqueará debido a 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 disfrutar de datos, debe utilizar IPC.
2. Simultaneidad de subprocesos múltiples
Comúnmente utilizada en sistemas operativos modernos como Windows y Linux para crear múltiples subprocesos en el mismo proceso para la concurrencia de diferentes instancias de lógica empresarial independiente. . Un ejemplo típico es que varios clientes TCP interactúan con el hilo correspondiente a cada cliente en el mismo proceso y disfrutan de todos los recursos del mismo proceso.
Ventajas: * * * *Disfruta del espacio de proceso, de muy fácil acceso * * * *Disfruta de los datos.
No hay mucha sobrecarga de espacio en el proceso, el cambio de contexto de subprocesos es rápido y la eficiencia de la programación es mayor que la del multiproceso.
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 competencia por el intercambio de datos entre subprocesos es compleja y requiere lidiar con la sincronización y los puntos muertos.
3.Multiplexación 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, que generalmente incluye mensajes en Windows Mecanismo de procesamiento y manejo de semáforos en Linux. Se pueden procesar simultáneamente una variedad de lógicas de negocios diferentes en un hilo, como salida del usuario, clics del mouse, redibujado de ventanas, entrada de red, etc.
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 competencia ni punto muerto.
No hay sobrecarga de espacio de proceso, ningún problema de cambio de contexto y una alta utilización de la CPU.
* * * Disfrute del espacio de proceso y acceda * * * Disfrute de los datos de forma muy sencilla.
Desventajas:
Los subprocesos necesitan administrar las máquinas de estado de múltiples instancias diferentes y manejar correctamente los eventos correspondientes, lo que conduce a la migración de diferentes estados.
En el caso de múltiples servicios, se necesita código manual para controlar varias máquinas de estado.
Más puntos de concurrencia generan más estados, una granularidad de gestión más precisa y códigos de lógica empresarial que están fuera de orden y son difíciles de mantener y comprender.
Demasiados estados asincrónicos hacen que la gestión de recursos sea más compleja y puede provocar fácilmente una fuga de recursos.