CE 6.7 Lua. Интересный пример скрипта
Появилась такая опция асинхронного выполнения скриптов
Если эту опцию поставить на скрипты, то появляются вот такие часики
АА-шные скрипты могут искать в этот момент сигнатуру.
Lua скрипты потестить было интересно, узнать действительно ли асинхронно выполняется. Например, один скрипт выполняет счет, второй выполняет счет. По выполнении выводится результат.
[ENABLE]
{$lua}
local _, counter, _, async = memrec.Description:match('(Cunt.=.)(%d*).*(Async.=.)(%w*)')
memrec.Async = async == 'true'
for i = 1, counter do end
local currentTime = os.date("%c"):gsub('/','.')
print('Finish record:' .. memrec.Description..', at time ' .. currentTime)
memrec.Active = false
function onMemRecPostExecute(memoryrecord, newState, succeeded)
if (memoryrecord == memrec and newState == true) then
memrec.Active = false
end
end
{$asm}
[DISABLE]
Во время выполнения включаем первую галку. Тут CE подвисает. Затем успеваем нажать на вторую галку. Видим как две иконки часов работают.
После выполнения
Если продублировать 4 скрипта, то видим, что нельзя запустить асинхронно более двух скриптов
Возможно, я Lua код где-то не правильно написал. Вот такой вариант еще делал
[ENABLE]
{$Lua}
function threadFunction(th)
th.freeOnTerminate(false)
th.Name = 'myThread'
for b = 1, 200000000 do
--checkSynchronize()
end
--while not th.Terminated do
-- myvar=myvar+1
-- synchronize(function() MainForm.Caption = 'myvar '..myvar end)
-- sleep(2000)
--end
synchronize(function() print("1") end)
end
--myvar=0
local myThread = createNativeThreadSuspended(threadFunction)
myThread.resume()
{$Asm}
[DISABLE]
{$Lua}
if myThread then
myThread.terminate()
myThread.waitfor()
myThread.destroy()
myThread=nil
end
{$Asm}
-
2
-
1
0 Комментариев
Рекомендуемые комментарии
Комментариев нет
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти