Стек при 2 функциях (dll)

Страницы: 1
RSS
Стек при 2 функциях (dll)
 
У меня в dll две функции. Обе постоянно что то делают со стеком. Есть ли риски того, что они будут по ошибке брать элементы друг друга? Или для каждой из них свой стек и путаница не грозит?
 
Уточнение. Функции длл-библиотеки могут вызываться из разных потоков квика, то есть есть риск одновременной работы с ними, а значит и со стеком
 
Цитата
Let_it_go написал:
Уточнение. Функции длл-библиотеки могут вызываться из разных потоков квика, то есть есть риск одновременной работы с ними, а значит и со стеком
В одновременном использовании кода библиотек потоками риска нет
 
риск возникает при одновременном обращении потоков к одним и тем же данным да и то если эти данные изменяются потоками.
Возникновение таких проблем полностью зависит от того, как Вы написал эти библиотеки.
Поэтому никто кроме Вас не знает - есть у Вас эти риски или нет.
Судя по вопросам - скорее есть чем нет.
 
Цитата
Let_it_go написал:
У меня в dll две функции. Обе постоянно что то делают со стеком. Есть ли риски того, что они будут по ошибке брать элементы друг друга? Или для каждой из них свой стек и путаница не грозит?
В такой ситуации Вам нужно создать два разных стека в каждом потоке с помощью lua_newthread()
 
Michael Bulychev,
тогда мне совсем ничего не понятно. Почему тогда Иерусалимскис пишет в своей книге по Луа:

то есть стек локальный. Зачем тогда lua_newthread()?
 
Видимо здесь речь идет о вложенных вызовах - например из Lua-функции вызывают C-функцию. В этом случае для C-функции стек не будет содержать аргументов вызывающей lua-функции. Если планируется использовать с-функцию, которая каким-то образом манипулирует Lua стеком, из разных потоков операционной системы, то необходимо либо синхронизровать доступ к lua_State, либо завести новый "поток" с помощью lua_newthread()
Страницы: 1
Читают тему
Наверх