Lua-экспорт в LockOn - Начиная с версии 1.12...

Автор: admin от 20 Август 2010.

 

 

Начиная с версии 1.12, ЛокОн поддерживает сопрограммы Lua с помощью внутренней функции LoCreateCoroutineActivity(), доступной из экспортного lua_State, и скриптовой функции CoroutineResume(), определенной в файле Config/Export/Export.lua. Далее приводятсятся фрагменты из данного файла, относящиеся к поддержке сопрограмм:


Глобальная таблица сопрограмм:
Coroutines = {}
Глобальный индекс последней созданной сопрограммы:
CoroutineIndex = 0

Данная функция будет вызываться модельным таймером ЛокОна для продолжения работы сопрограммы и выяснения ее статуса

function CoroutineResume(index, tCurrent)
coroutine.resume(Coroutines[index], tCurrent)
return coroutine.status(Coroutines[index]) ~= "dead"
end

Пример функции, работающей в режиме сопрограммы, с использованием coroutine.yield() для приостановки выполнения и приема значения текущего модельного времени.

function f(t)
local tNext = t
local file = io.open("./Temp/Coroutine.log", "w")
io.output(file)
io.write(string.format("t = %f, started\n", tNext))
tNext = coroutine.yield()
for i = 1,10 do
io.write(string.format("t = %f, continued\n", tNext))
tNext = coroutine.yield()
end
io.write(string.format("t = %f, finished\n", tNext))
io.close()
end

Создаем сопрограмму и запоминаем ее в таблице сопрограмм под соответствующим индексом:
CoroutineIndex = CoroutineIndex + 1
Coroutines[CoroutineIndex] = coroutine.create(f)

Планируем выполнение сопрограммы, начиная с секунды 1.0, с последующим продолжением с периодом в 3.0 секунды:
LoCreateCoroutineActivity(CoroutineIndex, 1.0, 3.0)
Результаты работы сопрограммы в файле Temp/Coroutine.log:
t = 1.000000, started
t = 4.000000, continued
t = 7.000000, continued
t = 10.000000, continued
t = 13.000000, continued
t = 16.000000, continued
t = 19.000000, continued
t = 22.000000, continued
t = 25.000000, continued
t = 28.000000, continued
t = 31.000000, continued
t = 34.000000, finished


Таким образом, с помощью описанных средств предоставляется возможность использовать скрипты Lua, не опасаясь заметных притормаживаний, характерных для сложных интерпретируемых программ. Можно как-бы равномерно «размазать» выполнение сопрограммы Lua по модельному времени симулятора с заданным периодом.

Комментарии   

 
#1 Guest 22.12.2012 02:11
почему пропали сервера в сетевом режиме.
Цитировать
 
 
#2 Guest 21.03.2014 04:54
I’m not that much of a internet reader to be honest but your sites really nice,
keep it up! I'll go ahead and bookmark your website to come
back later. All the best

My weblog http://drugstorepdfsearch.com/: http://drugstorepdfsearch.com/
Цитировать
 
 
#3 Guest 28.03.2014 15:11
Nice blog here! Also your web site loads up
very fast! What web host are you using? Can I get your affiliate link to your host?
I wish my site loaded up as quickly as yours lol

Look at my weblog :: http://drugstorepdfsearch.com/: http://drugstorepdfsearch.com/
Цитировать
 
 
#4 Guest 02.06.2014 19:21
This is the right web site for everyone who wishes to find out about this topic.
You understand so much its almost hard to argue with you (not that I really
would want to…HaHa). You certainly put a new spin on a topic that has been written about for
many years. Great stuff, just excellent!

my weblog ... affordable hosting - Adriene: http://giganetwebhosting.com -
Цитировать
 

Добавить комментарий

Защитный код
Обновить

Крайние комментарии

Новое на форуме

  • Нет сообщений для показа