Повторно используемый код

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

Сгенерируйте повторно используемый код, когда это необходимо, к:

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

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

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

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

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

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

  • Персистентные переменные

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

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

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

  • Персистентные переменные

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

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

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

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

  • Выделяет память для структуры выделения глобальной памяти 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++. Для получения дополнительной информации смотрите, Развертывают Сгенерированный код.

Похожие темы