getParamEx2 и многопоточность ?

Страницы: 1
RSS
getParamEx2 и многопоточность ?
 
Приветствую, всезнающий All !

Подскажите, можно ли из своей dll одновременно из нескольких потоков вызывать getParamEx2 ? Не обидится ли Квик ? Как обрабатывать будет ?
 
Цитата
BVladimir написал:
Приветствую, всезнающий All !

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