По умолчанию созданный код создает static переменные для переменных, размер которых превышает максимальное значение использования стека, хранящиеся в параметре объекта конфигурации StackUsageMax. Данные в static переменные сохраняются между вызовами функций. Аналогично, данные для MATLAB ® global и persistents существуют между вызовами функций. Поэтому, если основная функция выполняет сгенерированный код в нескольких потоках, могут возникнуть неопределенные условия гонки.
Чтобы создать код, более подходящий для одновременного выполнения в нескольких потоках, можно использовать MultiInstanceCode опция конфигурации. При использовании этой опции созданный код переносит данные, которые могут превысить локальное хранилище потоков, в определение структуры, чтобы можно было выделять защищенную от потоков память для этой структуры по отдельности. Аналогично, генератор кода переносит постоянные и глобальные данные в собственную структуру памяти. Если эта память не должна быть общей, можно выделить отдельную память для структур данных, используемых потоком.
Повторный ввод кода - это многократно используемая подпрограмма программирования, которую могут использовать одновременно несколько программ.
API для сгенерированного кода многократного использования
Использовать созданный повторно используемый код.
Определение генерации кода повторного ввода
Создайте код для повторного ввода в приложении MATLAB Coder™ или в командной строке.
Вызов кода повторного ввода в однопоточной среде
Использование созданного кода повторного ввода в однопоточной среде.
Вызов кода повторного ввода в многопоточной среде
Использование созданного кода повторного ввода в многопоточной среде.
Генерировать повторно вводимый код C из кода MATLAB
Создайте повторно используемый, повторно вводимый код C.
Код повторного ввода вызова без постоянных или глобальных данных (только для UNIX)
Создайте входящий код, использующий библиотеки потоков POSIX (pthread).
Код повторного вызова - многопоточный с постоянными данными (только для Windows)
Создание кода входа, использующего библиотеки, специфичные для платформ Windows ®.
Код повторного ввода вызова - многопоточный с постоянными данными (только для UNIX)
Создайте входящий код, использующий библиотеки потоков POSIX (pthread).