Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 23927|Resposta: 2

[Fonte] C# implementa mapeamento de memória de processos compartilhando memória de arquivos

[Copiar link]
Publicado em 07/10/2017 18:51:10 | | |
Arquivos de mapeamento de memória usam memória virtual para mapear arquivos ao espaço de endereços do processo, após o que o processo manipula o arquivo assim como o endereço no espaço do processo, como usando memcpy e outras funções de operação de memória na linguagem C. Esse método pode ser bem usado em situações onde um arquivo ou um arquivo grande precisa ser processado com frequência, e a eficiência do processamento de IO é maior do que a de um IO comum
Memória compartilhada é um caso especial de arquivos mapeados em memória, que mapeiam um pedaço de memória em vez de um arquivo no disco. O assunto da memória compartilhada é Processo, e o sistema operacional aloca um espaço de memória para cada processo por padrão, e cada processo só pode acessar um pedaço de memória alocado pelo sistema operacional, mas não a outros processos. E às vezes você precisa acessar a mesma memória entre processos diferentes, o que você deve fazer? O sistema operacional fornece uma API para criar acesso à memória compartilhada, e processos que precisam compartilhar memória podem acessar a memória compartilhada por múltiplos processos através desse conjunto de APIs definidas, e cada processo acessa essa memória como se estivesse acessando um arquivo em um disco rígido. O .Net 4.0 introduz o System.IO. MemoryMappedFiles, uma classe que encapsula as APIs relacionadas à Memória Compartilhada do Windows, facilitando o uso de arquivos de mapeamento de memória por programadores do .Net.
Use memória compartilhada em C#. O código a seguir para a App1 permite ao usuário inserir uma linha de texto na memória compartilhada; O App2 atualiza constantemente o console e gera o conteúdo mais recente de memória compartilhada; O App3 implementa as mesmas funções do App2, mas o método de leitura é diferente.

Dois métodos foram usados para ler os dados.
Como a comunicação entre processos raramente era usada antes, esse método é apenas uma compreensão preliminar. O programa é muito rudimentar, e há muitas coisas que não são julgadas. Por exemplo, como criar uma memória compartilhada, como recuperá-la e excluí-la, etc.




Anterior:.net/c# Código-fonte criptografado CryptoJS aes
Próximo:activemq Armazenamento persistente está cheio
 Senhorio| Publicado em 03/10/2025 16:10:57 |
.NET/C# implementa singleton de programa baseado em Mutex e MemoryMappedFile
https://www.itsvse.com/thread-10808-1-1.html

Processos pai-filho .NET/C# se comunicam usando MemoryMappedFile
https://www.itsvse.com/thread-10983-1-1.html
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com