1

Тема: Межпоточная синхронизация во внешних dll для QLua

Известно, что основной код скрипта и вызовы call-back'ов происходят в одном потоке, а работа функции main() - в другом потоке.
При написании DLL хотелось бы это грамотно учитывать.
Предлагаю обсудить тему межпоточной синхронизации в коде DLL подключаемых к QLua.

Условие: для своей DLL я использую qlua.dll, т.е. прилинковываю ее вызовы на этапе сборки через подключение qlua.lib.

Вопрос: если одна и таже реализованная в DLL функция вызывается одновременно из main() и какого-то call-back'а, то как правильно рабоать с глобальными переменными/данными?

Я понимаю так:
- если я работаю с глобальными переменными самой Lua в С++ коде  - то никаких дополниельных действий не нужно, т.к. вся работа идет в qlua.dll, где все засинхронизировано.
- если я работаю с какой-то своей глобальной памятью внутри самой DLL-ки помимо Lua-стека - то обязан обеспечивать межпоточную синхронизацию обращения к таким данным самостоятельно.

Это так? проводил ли кто-то эксперименты?

2

Re: Межпоточная синхронизация во внешних dll для QLua

swerg пишет:

Это так? проводил ли кто-то эксперименты?

Это так. Встроенная в qlua cинхронизация обеспечивает консистентность данных только в виртуальной машине Lua.