Difference between revisions of "X Threads"

From GiderosMobile
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
<languages />
 
 
<!-- GIDEROSOBJ:Threads -->
 
<!-- GIDEROSOBJ:Threads -->
'''<translate>Supported platforms</translate>:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform pc.png]][[File:Platform mac.png]][[File:Platform winrt.png]][[File:Platform win32.png]]<br/>
+
'''Supported platforms:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform pc.png]][[File:Platform mac.png]][[File:Platform winrt.png]][[File:Platform win32.png]]<br/>
'''<translate>Available since</translate>:''' 2018.10<br/>
+
'''Available since:''' 2018.10<br/>
=== <translate>Description</translate> ===
 
<translate>The Threads plugin provides the ability to run Lua code in separate threads, taking advantage of multiple cores where available.
 
</translate><br/>
 
=== <translate>Example</translate> ===
 
  
'''Simple example of getting result from thread.'''<br/>
+
=== Description ===
<source lang="lua">require "Threads"
+
 
 +
'''!!! THE THREAD PLUGIN WAS DEPRECATED IN GIDEROS 2022.10 !!!'''
 +
 
 +
The '''Threads''' plugin provides the ability to run Lua code in separate threads, taking advantage of multiple cores where available.
 +
 
 +
=== Example ===
 +
'''Simple example of getting result from a thread'''
 +
<syntaxhighlight lang="lua">
 +
require "Threads"
 
local thread = Thread.new()
 
local thread = Thread.new()
thread:setFunction(function()  
+
thread:setFunction(function()
  local a
+
local a = 0
  for i = 1, 10000000 do  
+
for i = 1, 10000000 do
    a += 1
+
a += 1
  end  
+
end
  return i  
+
return i
 
end)
 
end)
 
thread:execute()
 
thread:execute()
 
local ok = false
 
local ok = false
 
while not ok do
 
while not ok do
  ok = thread:getResult()
+
ok = thread:getResult()
 
end
 
end
 
print("woot!")
 
print("woot!")
</source>
+
</syntaxhighlight>
 
 
{|-
 
| style="width: 50%; vertical-align:top;"|
 
 
 
=== <translate>Methods</translate> ===
 
[[Special:MyLanguage/Thread.new|Thread.new]]  ''<translate>Creates a new thread object.</translate>''<br/><!-- GIDEROSMTD:Thread.new() Creates a new thread object. -->
 
[[Special:MyLanguage/Thread:setFunction|Thread:setFunction]]  ''<translate>Sets Lua function that thread will execute.</translate>''<br/><!-- GIDEROSMTD:Thread:setFunction(func) Sets Lua function that thread will execute. -->
 
[[Special:MyLanguage/Thread:execute|Thread:execute]]  ''<translate>Starts/executes our thread</translate>''<br/><!-- GIDEROSMTD:Thread:execute(vararg) Starts/executes our thread -->
 
[[Special:MyLanguage/Thread:resume|Thread:resume]]  ''<translate>Resumes a thread that has been yielded.</translate>''<br/><!-- GIDEROSMTD:Thread:resume(...) Resumes a thread that has been yielded. -->
 
[[Special:MyLanguage/Thread.yield|Thread.yield]]  ''<translate>Pauses executions of thread (only a valid call inside thread function).</translate>''<br/><!-- GIDEROSMTD:Thread.yield(...) Pauses executions of thread (only a valid call inside thread function). -->
 
[[Special:MyLanguage/Thread:status|Thread:status]]  ''<translate>Returns current status of the thread.</translate>''<br/><!-- GIDEROSMTD:Thread:status() Returns current status of the thread. -->
 
[[Special:MyLanguage/Thread:getNumLogicalCores|Thread:getNumLogicalCores]]  ''<translate>Returns number of logical cores on host machine.</translate>''<br/><!-- GIDEROSMTD:Thread:getNumLogicalCores() Returns number of logical cores on host machine. -->
 
[[Special:MyLanguage/Thread:requestTermination|Thread:requestTermination]]  ''<translate>Sets a flag to terminate thread.</translate>''<br/><!-- GIDEROSMTD:Thread:requestTermination() Sets a flag to terminate thread. -->
 
[[Special:MyLanguage/Thread.sendData|Thread.sendData]]  ''<translate>Sends data for retrieval by main thread (only a valid call inside thread function).</translate>''<br/><!-- GIDEROSMTD:Thread.sendData(...) Sends data for retrieval by main thread (only a valid call inside thread function). -->
 
[[Special:MyLanguage/Thread:fetchData|Thread:fetchData]]  ''<translate>Returns any data sent by thread sendData call.</translate>''<br/><!-- GIDEROSMTD:Thread:fetchData() Returns any data sent by thread sendData call. -->
 
[[Special:MyLanguage/Thread:getResults|Thread:getResults]]  ''<translate>Get any results from thread.</translate>''<br/><!-- GIDEROSMTD:Thread:getResults(wait_time) Get any results from thread. -->
 
| style="width: 50%; vertical-align:top;"|
 
=== <translate>Events</translate> ===
 
 
 
''none''<br/>
 
 
 
=== <translate>Constants</translate> ===
 
  
''none''<br/>
+
=== Class ===
 +
[[Thread]]<br/>
  
|}
+
{{Thread}}

Latest revision as of 05:06, 7 June 2025

Supported platforms: Platform android.pngPlatform ios.pngPlatform pc.pngPlatform mac.pngPlatform winrt.pngPlatform win32.png
Available since: 2018.10

Description

!!! THE THREAD PLUGIN WAS DEPRECATED IN GIDEROS 2022.10 !!!

The Threads plugin provides the ability to run Lua code in separate threads, taking advantage of multiple cores where available.

Example

Simple example of getting result from a thread

require "Threads"
local thread = Thread.new()
thread:setFunction(function()
	local a = 0
	for i = 1, 10000000 do
		a += 1
	end
	return i
end)
thread:execute()
local ok = false
while not ok do
	ok = thread:getResult()
end
print("woot!")

Class

Thread