Повторный код является переиспользуемой стандартной программой программирования, которую одновременно могут использовать несколько программ. Операционные системы и другое системное программное обеспечение, которые используют многопоточность для обработки параллельных событий, используют повторяющийся код. В параллельном окружении несколько потоков или процессов могут пытаться считать и записывать статические данные одновременно. Поэтому совместное использование кода, который использует постоянные или статические данные, затруднено. Повторный код не содержит статических данных. Вызывающие программы поддерживают свои переменные состояния и передают их в функцию. Поэтому любое количество потоков или процессов может совместно использовать одну копию повторяющейся стандартной программы.
Сгенерируйте повторный код, когда вы хотите:
Развертывание кода в многопоточных окружениях.
Используйте алгоритм с постоянными данными, принадлежащими к различным процессам или потокам.
Скомпилируйте код, который использует переменные функции, которые являются слишком большими, чтобы помещаться в стеке.
Если вы не задаете входящий код, 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 + +. Дополнительные сведения см. в разделе Развертывание сгенерированного кода.