Название: Выгрузка скриптов из QScriptEngine и о нескольких скриптах на одном ядре Отправлено: Denjs от Март 18, 2011, 14:52 Несколько вопросов касающихся того, как работать со списком скриптов которые загружены в QScriptEngine ?
Прочитав описание QScriptEngineAgent понимаю, да и просто поигравшись с системой, понимаю, что реально, скрипт не выгружается после исполнения в ряде случаев (если у него опрееделены функции, он создавал объекты или чтото там ешё) - собственно что я и имею. Первое что важно: мне надо принудительно выгрузить из скриптового ядра загруженный туда скрипт, и что бы при этом уничтожились все созданные им объекты. Что бы вызвался QScriptEngineAgent::scriptUnload(qint64 scriptId ) у прикрепленного к движку агента... Параллельно этому возникает вопрос о том, как получить список загруженных сейчас в скриптовый движок скриптов (попытаться рыться в контектсах, и через QScriptContextInfo вытаскивать scriptId() ? ) Пока думаю про то, что бы уничтожать скриптовый движок и создавать его заново, но это попахивает варварством... Название: Re: Выгрузка скриптов из QScriptEngine и о нескольких скриптах на одном ядре Отправлено: Mikhail от Март 18, 2011, 15:18 Ничего в этом страшного нет. Работает
Название: Re: Выгрузка скриптов из QScriptEngine и о нескольких скриптах на одном ядре Отправлено: Denjs от Март 18, 2011, 23:13 Ничего в этом страшного нет. Работает вы имеете в виду уничтожать скриптовый движок каждый раз когда мне надо принудительно и гарантированно выгрузить скрипт?а почему кстати этого не делает abortEvaluation()? Название: Re: Выгрузка скриптов из QScriptEngine и о нескольких скриптах на одном ядре Отправлено: Mikhail от Март 19, 2011, 09:19 В ассистенте написано, что она в соответствии с названием abortEvaluation() прекращает выполнение скрипта загруженного в scriptengine.
Его можно повторно запустить вызовом evaluate(). О выгрузке скрипта с помощью abortEvaluation() не говорится. Название: Re: Выгрузка скриптов из QScriptEngine и о нескольких скриптах на одном ядре Отправлено: Denjs от Март 19, 2011, 10:56 да в ассистанте понятно что написано.
Но почему метод isEvaluating() продолжает отдавать true после выполнения abortEvaluation() ? т.е. моя логика примрно такова - раз уж скрипт не исполняется - то зачем его держать в памяти? в конце концов - для простых скриптов - когда заканчивается его исполнение, то они сразу-же и выгружаются. (если верить описанию QScriptEngineAgent - Detailed Description)... ну нет, так нет.. Цитировать QScriptEngineAgent - Detailed Description:: А Есть не геморройный способ вычистить этот самый "its contents", который создан скрптом? In general terms, a script isn't unloaded until the engine has determined that none of its contents is referenced. мне для этого надо получить и перебирать контекст в котором исполнялся скрипт?? Название: Re: Выгрузка скриптов из QScriptEngine и о нескольких скриптах на одном ядре Отправлено: Mikhail от Март 19, 2011, 11:44 Држать скотпь в памя по сле остановки выполнения нужно хотя бы для того чтобы ьвыполнить его снова
|