Тема: Межпоточная синхронизация во внешних dll для QLua
Известно, что основной код скрипта и вызовы call-back'ов происходят в одном потоке, а работа функции main() - в другом потоке.
При написании DLL хотелось бы это грамотно учитывать.
Предлагаю обсудить тему межпоточной синхронизации в коде DLL подключаемых к QLua.
Условие: для своей DLL я использую qlua.dll, т.е. прилинковываю ее вызовы на этапе сборки через подключение qlua.lib.
Вопрос: если одна и таже реализованная в DLL функция вызывается одновременно из main() и какого-то call-back'а, то как правильно рабоать с глобальными переменными/данными?
Я понимаю так:
- если я работаю с глобальными переменными самой Lua в С++ коде - то никаких дополниельных действий не нужно, т.к. вся работа идет в qlua.dll, где все засинхронизировано.
- если я работаю с какой-то своей глобальной памятью внутри самой DLL-ки помимо Lua-стека - то обязан обеспечивать межпоточную синхронизацию обращения к таким данным самостоятельно.
Это так? проводил ли кто-то эксперименты?