Partager via


Fonctions de gestion de la mémoire

Ce document décrit les fonctions de gestion de la mémoire que le runtime d’accès concurrentiel fournit pour vous aider à allouer et libérer de la mémoire de manière simultanée.

Conseil

Le runtime d'accès concurrentiel fournit un planificateur par défaut, et vous n'êtes donc pas obligé d'en créer un dans votre application. Étant donné que le planificateur de tâches vous aide à affiner les performances de vos applications, nous vous recommandons de commencer par la bibliothèque de modèles parallèles (PPL) ou la bibliothèque d’agents asynchrones si vous débutez avec le runtime d’accès concurrentiel.

Le runtime d’accès concurrentiel fournit deux fonctions de gestion de la mémoire optimisées pour allouer et libérer des blocs de mémoire de manière simultanée. La fonction concurrency ::Alloc alloue un bloc de mémoire à l’aide de la taille spécifiée. La fonction concurrency ::Free libère la mémoire allouée par Alloc.

Remarque

Les fonctions et Free les Alloc fonctions s’appuient les unes sur les autres. Utilisez la fonction uniquement pour libérer de la Free mémoire que vous allouez à l’aide de la Alloc fonction. En outre, lorsque vous utilisez la fonction pour allouer de la Alloc mémoire, utilisez uniquement la Free fonction pour libérer cette mémoire.

Utilisez les fonctions et Free les Alloc fonctions lorsque vous allouez et libérez un ensemble fixe de tailles d’allocation à partir de différents threads ou tâches. Le runtime concurrentiel met en cache la mémoire qu’il alloue à partir du tas runtime C. Le runtime d’accès concurrentiel contient un cache de mémoire distinct pour chaque thread en cours d’exécution ; par conséquent, le runtime gère la mémoire sans utiliser de verrous ou de barrières de mémoire. Une application bénéficie davantage des fonctions et Free des Alloc fonctionnalités lorsque le cache de mémoire est accessible plus fréquemment. Par exemple, un thread qui appelle fréquemment à la fois Alloc et Free profite plus qu’un thread qui appelle Alloc principalement ou Free.

Remarque

Lorsque vous utilisez ces fonctions de gestion de la mémoire et que votre application utilise beaucoup de mémoire, l’application peut entrer une condition de mémoire faible plus tôt que prévu. Étant donné que les blocs de mémoire mis en cache par un thread ne sont pas disponibles pour un autre thread, si un thread contient beaucoup de mémoire, cette mémoire n’est pas disponible.

Exemple

Pour obtenir un exemple qui utilise les fonctions et Free les fonctions pour améliorer les Alloc performances de la mémoire, consultez How to : Use Alloc and Free to Improve Memory Performance.

Voir aussi

Planificateur de tâches
Guide pratique pour utiliser Alloc et Free pour améliorer les performances de la mémoire