Перейти к содержанию
  • записи
    104
  • комментариев
    125
  • просмотров
    23 497

CE 6.7 Lua. Интересный пример скрипта


MasterGH

1 065 просмотров

Появилась такая опция асинхронного выполнения скриптов

image.png

 

Если эту опцию поставить на скрипты, то появляются вот такие часики

image.png

 

АА-шные скрипты могут искать в этот момент сигнатуру.

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 подвисает. Затем успеваем нажать на вторую галку. Видим как две иконки часов работают.

image.png

 

После выполнения

image.png

 

Если продублировать 4 скрипта, то видим, что нельзя запустить асинхронно более двух скриптов

image.png

 

Возможно, я 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}

 

 

Asynchronous testing.CT

  • Понравилось 2
  • Плюс 1

0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.