1234567891011121314151617181920212223242526272829303132 |
- local Rx = require 'rx'
- local scheduler = Rx.CooperativeScheduler.create()
- local timerResolution = .25
- local function log(message)
- print('[' .. string.format('%.2f', scheduler.currentTime) .. '] ' .. message)
- end
- -- Demonstrate Rx.Scheduler.Cooperative by running some simultaneous cooperative threads.
- scheduler:schedule(function()
- log('this is like a setTimeout')
- end, 2)
- scheduler:schedule(function()
- local i = 1
- while true do
- log('this prints i twice per second: ' .. i)
- i = i + 1
- coroutine.yield(.5)
- end
- end)
- scheduler:schedule(function()
- for i = 1, 3 do
- log('this will print for 3 updates after 1 second')
- coroutine.yield()
- end
- end, 1)
- -- Simulate 3 virtual seconds.
- repeat
- scheduler:update(timerResolution)
- until scheduler.currentTime >= 3
|