Added Threaded TLoops

Modified the benchmark command
Fixed bugs in:
Timer s
Conditions
and Ranges
This commit is contained in:
2017-06-02 17:00:21 -04:00
parent 9c3bef8d78
commit 0e36ec917d
3 changed files with 58 additions and 4 deletions
+42
View File
@@ -0,0 +1,42 @@
require("multi.threading")
function multi:newThreadedTLoop(name,func,n)
local c=self:newTBase()
c.Type='tloopThread'
c.restN=n or 1
if func then
c.func={func}
end
function c:tofile(path)
local m=bin.new()
m:addBlock(self.Type)
m:addBlock(self.func)
m:addBlock(self.Active)
m:tofile(path)
end
function c:Resume()
self.rest=false
end
function c:Pause()
self.rest=true
end
function c:OnLoop(func)
table.insert(self.func,func)
end
c.rest=false
c.updaterate=0
c.restRate=.75
multi:newThread(name,function(ref)
while true do
if c.rest then
thread.sleep(c.restRate) -- rest a bit more when a thread is paused
else
for i=1,#c.func do
c.func[i](c)
end
thread.sleep(c.restN) -- lets rest a bit
end
end
end)
self:create(c)
return c
end