Generación y llamada a código reentrante
De forma predeterminada, el código generado crea variables static
para las variables cuyo tamaño supera el valor máximo de uso de la pila, que se almacena en el ajuste del objeto de configuración StackUsageMax
. Los datos de las variables static
persisten entre llamadas a funciones. Del mismo modo, los datos de las variables globales y persistentes de MATLAB® existen entre las llamadas a funciones. Por lo tanto, si su función principal ejecuta el código generado en varios hilos, pueden producirse condiciones de carrera indeterminadas.
Para generar código más adecuado para la ejecución simultánea en varios hilos, puede utilizar la opción de configuración MultiInstanceCode
. Cuando se usa esta opción, el código generado envuelve los datos que pueden superar el almacenamiento local del subproceso en una definición de estructura, de modo que se puede asignar memoria segura para hilos a esa estructura de forma individual. Del mismo modo, el generador de código envuelve los datos de las variables persistentes y globales en su propia estructura de memoria. Cuando esta memoria no se debe compartir, se puede asignar memoria individual para las estructuras de datos usadas por un hilo.
Temas
Conceptos básicos del código reentrante
- 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.
Flujos de trabajo
- 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.