Générer et appeler du code réentrant
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
- Understand and Use Reentrant Code
Configure the code generator to use reentrant code. - API for Generated Reusable Code
Use generated reusable code. - Call Reentrant Code in a Single-Threaded Environment
Use generated reentrant code in a single-threaded environment. - Call Reentrant Code in a Multithreaded Environment
Use generated reentrant code in a multithreaded environment.
Workflows
- Generate Reentrant C Code from MATLAB Code
Generate reusable, reentrant C code. - Call Reentrant Code with No Persistent or Global Data (UNIX Only)
Generate reentrant code that uses POSIX thread (pthread) libraries. - Call Reentrant Code — Multithreaded with Persistent Data (Windows Only)
Generate reentrant code that uses libraries that are specific to Windows® platforms. - Call Reentrant Code — Multithreaded with Persistent Data (UNIX Only)
Generate reentrant code that uses POSIX thread (pthread) libraries.