Lua:Class:Thread
Revision as of 23:20, 29 January 2018 by TheyCallMeTim13 (talk | contribs) (Created page with 'Category:Lua Thread '''class''': ('''Inheritance''': ''Object'') The thread class executes the given function in another thread using the systems thread…')
Thread class: (Inheritance: Object)
The thread class executes the given function in another thread using the systems thread mechanism
Creation
- createThread(function(Thread,...), ...)
- returns the Thread class object
Properties
- Name : string
- This name will be shown when the thread terminated abnormally
- Finished : boolean
- true if the thread has reached the end. Do not rely on this if the thread is freeOnTerminate(true) (which is the default)
- Terminated : function(timer)
- true if the Terminate method has been called
Methods
- freeOnTerminate(state) :
- When set to true the thread object will free itself when the function ends (default=true)
- Note
- Use this only from inside the thread function as the thread might have already terminated and freed itself when called
- synchronize(function(thread,...), ...)
- given function's return value
- Usually for GUI access. Called from inside the thread
- This will cause the thread to get the main thread to execute the given function and wait for it to finish.
- Returns the return value of the given function
- waitfor() :
- Waits for the given thread to finish (Not recommended to call this from inside the thread itself)
- suspend()
- Suspend the thread's execution
- resume() :
- Resume the thread;s executionmm
- terminate()
- Tells the thread it should terminate. The Terminated property will become true
Examples
local thread = createThread(function(timer) local i = 0 while i < 100 do i = i + 1 print(i) sleep(100) end return 50 end)
-- run given function after a delay local function delayed(func, delay) if type(func) ~= 'function' then return end if type(delay) ~= 'number' then delay = 1000 end local t = createTimer() t.Interval = delay t.OnTimer = function(t) -- only run once by destroying the timer object t.destroy() func() end end
delayed(function() print('suspending') thread.suspend() delayed(function() print('resuming') thread.resume() end, 3500) end, 5000)