Modified changes

This commit is contained in:
Ryan Ward 2022-12-10 22:48:26 -05:00
parent 35a86a6cda
commit bbc83acc0f
2 changed files with 34 additions and 2 deletions

View File

@ -84,12 +84,18 @@ multi:mainloop()
Added
---
- `thread.chain(...)` allows you to chain `thread.hold(FUNCTIONs)` together
```
```lua
while true do
thread.chain(hold_function_1, hold_function_2)
end
```
If the first function returns true, it moves on to the next one
If the first function returns true, it moves on to the next one. if expanded it follows:
```lua
while true do
thread.hold(hold_function_1)
thread.hold(hold_function_2)
end
```
- Experimental option to multi settings: `findopt`. When set to `true` it will print out a message when certain pattern are used with this library. For example if an anonymous function is used in thread.hold() within a loop. The library will trigger a message alerting you that this isn't the most performant way to use thread.hold().
- `multi:newSystemThreadedConnection()`

View File

@ -876,6 +876,32 @@ function multi:newTStep(start,reset,count,set)
return c
end
local tasks = {}
local _tasks = 0
local function _task_handler()
tasks[#tasks + 1] = func
_tasks = _tasks + 1
end
function multi:newTask(func)
multi:newThread("Task Handler",function()
while true do
thread.hold(function()
return _tasks > 1
end)
for i=1,_tasks do
tasks[i]()
end
_tasks = 0
end
end)
-- Re bind this method to use the one that doesn't init a thread!
multi.newTask = _task_handler
tasks[#tasks + 1] = func
_tasks = _tasks + 1
end
local scheduledjobs = {}
local sthread