Los archivos de mapeo de memoria utilizan memoria virtual para asignar archivos al espacio de direcciones del proceso, tras lo cual el proceso manipula el archivo igual que la dirección en el espacio de procesos, como usando memcpy y otras funciones de operación de memoria en el lenguaje C. Este método puede utilizarse eficazmente en situaciones donde un archivo o un archivo grande necesita ser procesado con frecuencia, y la eficiencia de procesamiento de IO es mayor que la de una IO ordinaria La memoria compartida es un caso especial de archivos mapeados en memoria, que mapean un fragmento de memoria en lugar de un archivo en disco. El tema de memoria compartida es Proceso, y el sistema operativo asigna un espacio de memoria a cada proceso por defecto, y cada proceso solo puede acceder a un fragmento de memoria asignado por el sistema operativo, pero no a otros procesos. Y a veces necesitas acceder a la misma pieza de memoria entre diferentes procesos, ¿qué deberías hacer? El sistema operativo proporciona una API para crear acceso a la memoria compartida, y los procesos que necesitan compartir memoria pueden acceder a la memoria compartida por varios procesos a través de este conjunto de APIs definidas, y cada proceso accede a esta memoria como si estuviera accediendo a un archivo en un disco duro. El .Net 4.0 introduce el System.IO. El espacio de nombres MemoryMappedFiles, una clase que encapsula las APIs relacionadas con la Memoria Compartida de Windows, facilitando que los programadores .Net utilicen archivos de mapeo de memoria. Usa memoria compartida en C#. El siguiente código para App1 permite al usuario introducir una línea de texto en memoria compartida; La App2 actualiza constantemente la consola y muestra el contenido más reciente de memoria compartida; App3 implementa las mismas funciones que App2, pero el método de lectura es diferente.
Se utilizaron dos métodos para leer los datos. Dado que la comunicación entre procesos rara vez se utilizaba antes, este método es solo una comprensión preliminar. El programa es demasiado rudimentario y hay muchas cosas que no se juzgan. Por ejemplo, cómo crear una memoria compartida, cómo recuperarla y eliminarla, etc.
|