Generazione e chiamata di codice rientrante
Per impostazione predefinita, il codice generato crea delle variabili static
per le variabili la cui grandezza supera il valore massimo di utilizzo dello stack, memorizzato nell'impostazione dell'oggetto di configurazione StackUsageMax
. I dati delle variabili static
persistono tra le chiamate di funzione. In modo analogo, i dati per le variabili globali e per le variabili persistenti di MATLAB® continuano a essere presenti tra le chiamate di funzione. Pertanto, se la funzione principale esegue il codice generato in più thread, possono verificarsi condizioni di race indeterminate.
Per generare codice più adatto all'esecuzione simultanea in più thread, è possibile utilizzare l'opzione di configurazione MultiInstanceCode
. Quando si utilizza questa opzione, il codice generato avvolge i dati che possono eccedere la memoria locale del thread in una definizione di struttura, consentendo di allocare la memoria thread-safe per quella struttura in modo individuale. In modo analogo, il generatore di codice avvolge i dati persistenti e globali in una propria struttura di memoria. Quando tale memoria non deve essere condivisa, è possibile allocare memoria individuale per le strutture di dati utilizzate da un thread.
Argomenti
Nozioni di base sul codice rientrante
- 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.
Workflow
- 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.