-- этот поток выведет 'Hi!' при запуске, подождёт 5 секунд, затем выведет 'Bye.' и завершится
function firstThread()
print("Hi!")
wait(5000)
print("Bye.")
end
function secondThread()
-- бесконечные циклы внутри потоков - не проблема
while true do
wait(1000)
print("secondThread() prints this message every second.")
end
end
function thirdThread(id, delay)
if id == 5 then
-- поток можно завершить изнутри с помощью return
return
end
wait(delay)
print("id: " .. id .. ", delay: " .. delay)
end
function main()
-- просто создаём поток. он запустится сразу же
lua_thread.create(firstThread)
-- создаём другой поток замороженным
local thread1 = lua_thread.create_suspended(secondThread)
-- зачем-то ждём 3 секунды
wait(3000)
-- и запускаем этот поток
thread1:run()
-- можно запускать сразу несколько потоков для одной и той же функции
for i = 1, 10 do
-- запускаем поток с передачей параметров: индекс и случайная задержка
local del = math.random(100, 1500)
lua_thread.create(thirdThread, i, del)
end
-- сопрограмму main всё равно нужно ставить на бесконечное ожидание, даже если есть другие потоки
wait(-1)
end