Повторно используемый код является допускающей повторное использование стандартной программой программирования, которую несколько программ могут использовать одновременно. Операционные системы и другое системное программное обеспечение, которые используют многопоточность, чтобы обработать параллельные события, используют повторно используемый код. В параллельной среде несколько потоков или процессов могут попытаться считать и записать статические данные одновременно. Поэтому совместное использование кода, который использует персистентные или статические данные, затрудняет. Повторно используемый код не содержит статические данные. Программы вызова обеспечивают свои переменные состояния и передают их в функцию. Поэтому любое количество потоков или процессов может совместно использовать одну копию повторно используемой стандартной программы.
Сгенерируйте повторно используемый код, когда это необходимо, к:
Разверните свой код в многопоточных средах.
Используйте алгоритм с персистентными данными, принадлежащими различным процессам или потокам.
Скомпилируйте код, который использует функциональные переменные, которые являются слишком большими, чтобы соответствовать на стеке.
Если вы не задаете повторно используемый код, MATLAB® Coder™ генерирует код, который использует статически выделенную память для:
Функциональные переменные, которые являются слишком большими, чтобы соответствовать на стеке
Глобальные переменные
Персистентные переменные
Если сгенерированный код использует выделение статического ЗУ для этих переменных, вы не можете развернуть сгенерированный код в средах, которые требуют повторно используемого кода. Если вы не можете настроить размер выделения статического ЗУ, сгенерированный код может привести к переполнению размера статического ЗУ.
Когда вы генерируете повторно используемый код, MATLAB Coder создает структуры входных данных для:
Функциональные переменные, которые являются слишком большими, чтобы соответствовать на стеке
Персистентные переменные
Глобальные переменные
Можно затем динамически выделить память для этих входных структур. Использование динамического выделения памяти означает, что можно развернуть код в повторно используемых средах.
Чтобы развернуть сгенерированный код, необходимо создать main
функция, что:
Включает заголовочный файл primary_function_name
H.
Выделяет память для структуры выделения глобальной памяти primary_function_name
StackData
.
Если персистентные или глобальные данные использования алгоритма, выделяет память для глобальной структуры primary_function_name
PersistentData
.
Вызывает эти функции:
primary_function_name
_initialize
.
primary_function_name
.
primary_function_name
_terminate
.
Когда вы преобразуете функцию MATLAB в библиотечную функцию C/C++ или исполняемый файл C/C++, MATLAB Coder генерирует две функции обслуживания. Вызовите эти функции обслуживания в коде, который вызывает сгенерированную функцию C/C++. Для получения дополнительной информации смотрите, Развертывают Сгенерированный код.