<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Topics tagged with ce async]]></title><description><![CDATA[A list of topics that have been tagged with ce async]]></description><link>https://celua.ru/tags/ce async</link><generator>RSS for Node</generator><lastBuildDate>Wed, 17 Jun 2026 13:29:11 GMT</lastBuildDate><atom:link href="https://celua.ru/tags/ce async.rss" rel="self" type="application/rss+xml"/><pubDate>Invalid Date</pubDate><ttl>60</ttl><item><title><![CDATA[Асинхронное выполнение сценариев]]></title><description><![CDATA[Записи в таблице CE представим как сценарии, которые должны выполнятся асинхронно. Т.е. они что-от делают некоторое время одновременно, например, сканируют память. При этом ничего зависает.
Для этого будем актировать такую опцию

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

АА-шные скрипты могут искать в этот момент сигнатуру.
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]


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

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

Вот такой вариант еще
[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
]]></description><link>https://celua.ru/topic/35/асинхронное-выполнение-сценариев</link><guid isPermaLink="true">https://celua.ru/topic/35/асинхронное-выполнение-сценариев</guid><dc:creator><![CDATA[MasterGH]]></dc:creator><pubDate>Invalid Date</pubDate></item></channel></rss>