- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
-- async IO operations
-- op1.asyncRun(cb) - execute op1, and call cb(op1_result) after op1 completion
-- op1 * g - new async operation which will execute op1.asyncRun(), then execute g(op1_result).asyncRun() and return op2_result
-- op1 .. op2 - the same, but ignore result of op1. Will execute op1.asyncRun(), then op2.asyncRun() and return op2_result
private.binder = {
__mul =
function(op1, g)
local op = {
asyncRun =
function(cb)
op1.asyncRun(
function(op1_result)
g(op1_result).asyncRun(cb)
end
)
end
}
setmetatable(op, private.binder)
return op
end,
__concat =
function(op1, op2)
return op1 * function(op1_result) return op2 end
end,
__metatable = 1
}
-- примеры использования:
-- (Chatter.IO.Log("tic") .. Chatter.IO.Sleep(1000) .. Chatter.IO.Log("tac") .. Chatter.IO.Sleep(1000) .. Chatter.IO.Log("toe")).asyncRun(function() end)
-- (Chatter.IO.GetTime * Chatter.IO.Log .. Chatter.IO.Sleep(1000) .. Chatter.IO.GetTime * Chatter.IO.Log).asyncRun(function() end)
carsten 10.07.2011 14:14 # 0
bugmenot 10.07.2011 17:11 # 0
сэйвы грузило минуты по три
перед удалением посмотрел - а там lua
MAKAKA 21.05.2020 04:54 # 0
Сам луа ничего про потоки не знает, там только корутины есть
А зачем вам думать про сборку мусора? Хотите писать деструкторы?
jojaxon 21.05.2020 05:02 # 0
MAKAKA 21.05.2020 05:03 # 0
у меня к 12-й строке стек порвался