Contenu principal

Générer et appeler du code réentrant

Générer et appeler du code réentrant pour des environnements mono ou multithreads

Par défaut, le code généré crée des variables static pour les variables dont la taille dépasse la valeur d’utilisation maximale de la stack stockée dans le paramètre StackUsageMax de l’objet de configuration. Les données des variables static sont conservées d’un appel de fonction à un autre. Les données des variables MATLAB® globales et persistantes sont elles aussi conservées d’un appel de fonction à un autre. Par conséquent, si votre fonction main exécute le code généré sur plusieurs threads, des situations de concurrence indéterminées peuvent se produire.

Pour générer du code adapté à l’exécution simultanée sur plusieurs threads, vous pouvez utiliser l’option de configuration MultiInstanceCode. Avec cette option, le code généré encapsule les données qui dépassent le stockage local du thread dans une définition de structure. Vous pouvez ainsi allouer individuellement de la mémoire thread-safe à cette structure. De la même manière, le générateur de code encapsule les données persistantes et globales dans sa propre structure de mémoire. Lorsque cette mémoire ne doit pas être partagée, vous pouvez allouer individuellement de la mémoire aux structures de données utilisées par un thread.

Rubriques

Fondamentaux du code réentrant

Workflows