Partilhar via


Funções de gerenciamento da memória

Este documento descreve as funções de gerenciamento de memória que o Runtime de Simultaneidade fornece para ajudá-lo a alocar e liberar memória de maneira simultânea.

Dica

O Runtime de Simultaneidade fornece um agendador padrão e, portanto, você não precisa criar um em seu aplicativo. Como o Agendador de Tarefas ajuda você a ajustar o desempenho de seus aplicativos, é recomendável que você comece com a PPL (Biblioteca de Padrões Paralelos) ou a Biblioteca de Agentes Assíncronos se você for novo no Runtime de Simultaneidade.

O Runtime de Simultaneidade fornece duas funções de gerenciamento de memória otimizadas para alocar e liberar blocos de memória de maneira simultânea. A função concurrency::Alloc aloca um bloco de memória usando o tamanho especificado. A função concurrency::Free libera a memória alocada por Alloc.

Observação

As funções Alloc e Free dependem umas das outras. Use a função Free somente para liberar a memória alocada usando a função Alloc. Além disso, quando você usa a função Alloc para alocar memória, use apenas a função Free para liberar essa memória.

Use as funções Alloc e Free quando você alocar e liberar um conjunto fixo de tamanhos de alocação a partir de diferentes threads ou tarefas. O Runtime de Simultaneidade armazena em cache a memória alocada do heap do Runtime C. O Runtime de Simultaneidade contém um cache de memória separado para cada thread em execução; portanto, o runtime gerencia a memória sem o uso de bloqueios ou barreiras de memória. Um aplicativo se beneficia mais das funções Alloc e Free quando o cache de memória é acessado com maior frequência. Por exemplo, um thread que frequentemente chama Alloc e Free beneficia mais do que um thread que chama principalmente Alloc ou Free.

Observação

Quando você usa essas funções de gerenciamento de memória e seu aplicativo usa muita memória, o aplicativo pode atingir uma condição de baixa memória mais cedo do que você espera. Como os blocos de memória armazenados em cache por um thread não estão disponíveis para nenhum outro thread, se um thread retiver muita memória, essa memória não estará disponível.

Exemplo

Para obter um exemplo que usa as funções Alloc e Free para melhorar o desempenho da memória, consulte Como usar Alloc e Free para melhorar o desempenho da memória.

Confira também

Agendador de Tarefas
Como usar Alloc e Free para melhorar o desempenho da memória