Определите, может ли S-функция запускаться многопоточно
ssSetRuntimeThreadSafetyCompliance(SimStruct *S, int_T val)
S
SimStruct, представляющий блок S-Function.
val
Податливость безопасности резьбы. Настройка может быть:
RUNTIME_THREAD_SAFETY_COMPLIANCE_UNKNOWN
- Объявить, что неизвестно, является ли S-функция threadsafe.
RUNTIME_THREAD_SAFETY_COMPLIANCE_TRUE
- Объявите S-функцию как threadsafe.
RUNTIME_THREAD_SAFETY_COMPLIANCE_FALSE
- Объявите S-функцию не threadsafe.
Используйте этот макрос в S-функции, чтобы задать его как threadsafe, что означает, что он может запускаться многопоточно. Эта настройка работает с set_param
функциональные MultithreadedSim
свойство блока. Поведение такое:
Опция | MultithreadedSim Настройка | S-функция запускается с одной или многопоточно |
---|---|---|
RUNTIME_THREAD_SAFETY_COMPLIANCE_UNKNOWN | 'auto' | Один поток |
RUNTIME_THREAD_SAFETY_COMPLIANCE_TRUE | 'auto' | Мультинить |
RUNTIME_THREAD_SAFETY_COMPLIANCE_FALSE | 'auto' | Один поток |
— | 'off' | Установка игнорируется, и блок s-function запускается в одиночном виде |
C, C++
Смотрите S-функцию, используемую в matlabroot
/ toolbox/simulink/simdemos/simfeatures/src/slex Co Sim Prime SF cn.c