Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 23927|Respuesta: 2

[Fuente] C# implementa el mapeo de memoria de procesos para compartir memoria de archivos

[Copiar enlace]
Publicado en 7/10/2017 18:51:10 | | |
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.




Anterior:.net/c# Código fuente cifrado en CryptoJS aes
Próximo:activemq Persistent store está lleno
 Propietario| Publicado en 3/10/2025 16:10:57 |
.NET/C# implementa un programa singleton basado en Mutex y MemoryMappedFile
https://www.itsvse.com/thread-10808-1-1.html

.NET/C# los procesos padre-hijo se comunican usando MemoryMappedFile
https://www.itsvse.com/thread-10983-1-1.html
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com