Повторный код

Повторный код является переиспользуемой стандартной программой программирования, которую одновременно могут использовать несколько программ. Операционные системы и другое системное программное обеспечение, которые используют многопоточность для обработки параллельных событий, используют повторяющийся код. В параллельном окружении несколько потоков или процессов могут пытаться считать и записывать статические данные одновременно. Поэтому совместное использование кода, который использует постоянные или статические данные, затруднено. Повторный код не содержит статических данных. Вызывающие программы поддерживают свои переменные состояния и передают их в функцию. Поэтому любое количество потоков или процессов может совместно использовать одну копию повторяющейся стандартной программы.

Сгенерируйте повторный код, когда вы хотите:

  • Развертывание кода в многопоточных окружениях.

  • Используйте алгоритм с постоянными данными, принадлежащими к различным процессам или потокам.

  • Скомпилируйте код, который использует переменные функции, которые являются слишком большими, чтобы помещаться в стеке.

Если вы не задаете входящий код, MATLAB® Coder™ генерирует код, который использует статически выделенную память для:

  • Функциональные переменные, которые слишком большие, чтобы помещаться в стеке

  • Глобальные переменные

  • Постоянные переменные

Если сгенерированный код использует статическое выделение памяти для этих переменных, вы не можете развернуть сгенерированный код в окружениях, которые требуют повторного ввода кода. Если вы не можете настроить статический размер выделения памяти, сгенерированный код может привести к статическому переполнению размера памяти.

Когда вы генерируете входящий код, MATLAB Coder создает структуры входных данных для:

  • Функциональные переменные, которые слишком большие, чтобы помещаться в стеке

  • Постоянные переменные

  • Глобальные переменные

Затем можно динамически выделять память для этих входных структур. Использование динамического выделения памяти означает, что вы можете развернуть код в повторных окружениях.

Чтобы развернуть сгенерированный код, необходимо создать main функция, которая:

  • Включает заголовочный файл primary_function_name.h.

  • Выделяет память для глобальной структуры выделения памяти primary_function_nameStackData.

  • Если алгоритм использует постоянные или глобальные данные, выделяет память для глобальной структуры primary_function_namePersistentData.

  • Вызывает следующие функции:

    • primary_function_name_initialize.

    • primary_function_name.

    • primary_function_name_terminate.

Когда вы преобразуете функцию MATLAB в функцию библиотеки C/C + + или исполняемый файл C/C + +, MATLAB Coder генерирует две функции домашней работы. Вызовите эти функции домашнего хозяйства в коде, который вызывает сгенерированную функцию C/C + +. Дополнительные сведения см. в разделе Развертывание сгенерированного кода.

Похожие темы