Подскажите, можно ли из своей dll одновременно из нескольких потоков вызывать getParamEx2 ? Не обидится ли Квик ? Как обрабатывать будет ?
Вообще-то обижаться могут лишь ваши потоки. КВИКУ это по ... Это вы должны сделать корректную обработку в ваших потоках. А если Вы это не сделаете то и доступ к этой функции не получите из разных потоков. --------------------- СПАСЕНИЕ УТОПАЮЩИХ – ДЕЛО РУК САМИХ УТОПАЮЩИХ.
nikolz написал: А если Вы это не сделаете то и доступ к этой функции не получите из разных потоков.
Т.е. если два потока ОДНОвременно (без локов) вызовут getParamEx2 в Квике, то он нормально это обработает как два вызова, т.е. по очереди ? Или один проигнорируется ?
nikolz написал: А если Вы это не сделаете то и доступ к этой функции не получите из разных потоков.
Т.е. если два потока ОДНОвременно (без локов) вызовут getParamEx2 в Квике, то он нормально это обработает как два вызова, т.е. по очереди ? Или один проигнорируется ?
попробую объяснить. Начну от печки. Функция dll - это неизменяемый код в памяти. Так как он не изменяется, то он хранится в одном экземпляре и может использоваться одновременно любым числом потоков. ------------------------- Поэтому проблема многопоточности не в коде функции, а в тех данных, которые эта функция изменяет. Но это в случае, если Вы создаете всю свою программу на СИ или любом другом языке, который компилируется в нормальный машинный код. ----------------- Для виртуальных машин, которой является VMLua, встроенная в КВИК немного сложнее. ----------------------- С функцией dll, созданной для VMLua ,есть проблемы связанные с доступом к коду функции. --------------------- Эта проблема зависит не от числа потоков, а от механизма доступа Вашей dll к таблице указателей на функцию getParamEx2. ------------------ Поэтому у Вас есть две проблемы. Первая - это синхронизация потоков. Вторая - это доступ к функциям библиотеки QLua. ---------------- Успехов в решении проблем.