Generieren und Aufrufen von Reentrant-Code
Standardmäßig erstellt der generierte Code static
-Variablen für Variablen, deren Größe den maximalen Stack-Auslastungswert überschreitet; dies wird in der Konfigurationsobjekt-Einstellung StackUsageMax
gespeichert. Die Daten in den static
-Variablen bleiben über Funktionsaufrufe hinweg bestehen. Ähnlich hierzu bleiben die Daten für globale und persistente MATLAB®-Elemente über Funktionsaufrufe hinweg bestehen. Wenn Ihre Hauptfunktion den generierten Code in mehreren Threads ausführt, können unbestimmte Wettlaufsituationen (Race Conditions) auftreten.
Um Code zu generieren, der sich besser für die simultane Ausführung in mehreren Threads eignet, können Sie die Konfigurationsoption MultiInstanceCode
verwenden. Wenn Sie diese Option verwenden, wrappt der generierte Code Daten, die den lokalen Thread-Speicher womöglich überschreiten, in eine Strukturdefinition, damit Sie threadsicheren Speicher für diese Struktur zuweisen können. Änhlich hierzu wrappt der Codegenerator persistente und globale Daten in eine eigene Speicherstruktur. Dieser Speicher sollte nicht geteilt werden, Sie können jedoch einzelne Speicherabschnitte für die von einem Thread verwendeten Datenstrukturen zuweisen.
Themen
Grundlagen zu Reentrant-Code
- 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.