-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature: Threader
Tron edited this page Jan 13, 2023
·
1 revision
Most importantly for Async
operation when you've plenty of executions to be performed on some heavy data which would cause infinite loop termination normally. Essentially its also needed by Async/Await functionality provided by the same module.
Add the below code once in either of the shared .lua
script of the resource you want to use within:
--Declare it globally only once
loadstring(exports.assetify_library:import("threader"))()
local string: type = self:getType()
local thread: cThread = assetify.thread:getThread()
local thread: cThread = assetify.thread:create(
function: exec
)
local thread: cThread = assetify.thread:createHeartbeat(
function: conditionExec,
function: exec,
int = rate
)
local promise: cPromise = assetify.thread:createPromise(
function: callback(resolve, reject), --(Optional) Note: Thread instance is passed as param if Async is enabled; i.e, callback(cThread, resolve, reject)
table: {
isAsync = false, --(Optional): Bool flag indicating whether the handle should be asynchronous
timeout = 6000 --(Optional): Timeout duration in milliseconds
}
)
cPromise: {
resolve = resolve(...),
reject = reject(...)
}
local bool: result = self:destroy()
local bool: result = assetify.thread:pause()
local string: status = self:status()
--Syntax #1:
local bool: result = self:resume()
--Syntax #2:
--Note: Use this when you need to repeatedly resume a thread
local bool: result = self:resume(
table: {
int: executions = 1 --Number of executions within a resume
int: frames = 100 --Number of frames to run the resume interval at
}
)
--Duration must in milliseconds
local bool: result = self:sleep(
int: duration
)
local bool: result = self:await(
function: exec
)
local ~: ...results = self:try(
table: {
exec = function(self)
--Your codeblocks here
return a, b, c
end,
catch = function(...)
iprint(table.pack(...))
return false
end
}
)