Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fe5333512f | |||
| b2ae7181d6 | |||
| 2a8b3d095f | |||
| 68908f093b |
@ -1041,13 +1041,13 @@ function multi.holdFor(n,func)
|
|||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
local function cleanReturns(...)
|
local function cleanReturns(...)
|
||||||
local n = select("#", ...)
|
|
||||||
local returns = {...}
|
local returns = {...}
|
||||||
local rets = {}
|
local rets = {}
|
||||||
local ind = 0
|
local ind = 0
|
||||||
for i=n,1,-1 do
|
for i=#returns,1,-1 do
|
||||||
if returns[i] then
|
if returns[i] then
|
||||||
ind = i
|
ind = i
|
||||||
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return unpack(returns,1,ind)
|
return unpack(returns,1,ind)
|
||||||
|
|||||||
@ -53,11 +53,6 @@ local function INIT(__GlobalLinda,__SleepingLinda)
|
|||||||
until __GlobalLinda:get(name)
|
until __GlobalLinda:get(name)
|
||||||
return __GlobalLinda:get(name)
|
return __GlobalLinda:get(name)
|
||||||
end
|
end
|
||||||
if getOS() == "windows" then
|
|
||||||
THREAD.__CORES = tonumber(os.getenv("NUMBER_OF_PROCESSORS"))
|
|
||||||
else
|
|
||||||
THREAD.__CORES = tonumber(io.popen("nproc --all"):read("*n"))
|
|
||||||
end
|
|
||||||
function THREAD.getCores()
|
function THREAD.getCores()
|
||||||
return THREAD.__CORES
|
return THREAD.__CORES
|
||||||
end
|
end
|
||||||
@ -92,17 +87,16 @@ local function INIT(__GlobalLinda,__SleepingLinda)
|
|||||||
end
|
end
|
||||||
_G.THREAD_ID = 0
|
_G.THREAD_ID = 0
|
||||||
function THREAD.sleep(n)
|
function THREAD.sleep(n)
|
||||||
math.randomseed(os.time())
|
|
||||||
__SleepingLinda:receive(n, "__non_existing_variable")
|
__SleepingLinda:receive(n, "__non_existing_variable")
|
||||||
end
|
end
|
||||||
function THREAD.hold(n)
|
function THREAD.hold(n)
|
||||||
local function wait()
|
while true do
|
||||||
math.randomseed(os.time())
|
|
||||||
__SleepingLinda:receive(.001, "__non_existing_variable")
|
__SleepingLinda:receive(.001, "__non_existing_variable")
|
||||||
|
local tab = {n()}
|
||||||
|
if tab[1] then
|
||||||
|
return unpack(tab)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
repeat
|
|
||||||
wait()
|
|
||||||
until n()
|
|
||||||
end
|
end
|
||||||
local GLOBAL = {}
|
local GLOBAL = {}
|
||||||
setmetatable(GLOBAL, {
|
setmetatable(GLOBAL, {
|
||||||
|
|||||||
@ -213,9 +213,12 @@ function threads.createStaticTable(n)
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
function threads.hold(n)
|
function threads.hold(n)
|
||||||
local dat
|
while true do
|
||||||
while not(dat) do
|
love.timer.sleep(.001)
|
||||||
dat = n()
|
local tab = {n()}
|
||||||
|
if tab[1] then
|
||||||
|
return unpack(tab)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return threads
|
return threads
|
||||||
@ -48,19 +48,12 @@ local function INIT(env)
|
|||||||
print("Waiting",thread)
|
print("Waiting",thread)
|
||||||
return thread.hold(function() return GLOBAL[name] end)
|
return thread.hold(function() return GLOBAL[name] end)
|
||||||
end
|
end
|
||||||
if getOS() == "windows" then
|
|
||||||
THREAD.__CORES = tonumber(os.getenv("NUMBER_OF_PROCESSORS"))
|
|
||||||
else
|
|
||||||
THREAD.__CORES = tonumber(io.popen("nproc --all"):read("*n"))
|
|
||||||
end
|
|
||||||
function THREAD.getCores()
|
function THREAD.getCores()
|
||||||
return THREAD.__CORES
|
return THREAD.__CORES
|
||||||
end
|
end
|
||||||
function THREAD.getConsole()
|
function THREAD.getConsole()
|
||||||
local c = {}
|
local c = {}
|
||||||
function c.print(...)
|
c.print = print
|
||||||
print(...)
|
|
||||||
end
|
|
||||||
function c.error(err)
|
function c.error(err)
|
||||||
error("ERROR in <"..GLOBAL["$__THREADNAME__"]..">: "..err)
|
error("ERROR in <"..GLOBAL["$__THREADNAME__"]..">: "..err)
|
||||||
end
|
end
|
||||||
@ -69,14 +62,7 @@ local function INIT(env)
|
|||||||
function THREAD.getThreads()
|
function THREAD.getThreads()
|
||||||
return {} --GLOBAL.__THREADS__
|
return {} --GLOBAL.__THREADS__
|
||||||
end
|
end
|
||||||
if os.getOS() == "windows" then
|
THREAD.__CORES = thread.__CORES
|
||||||
THREAD.__CORES = tonumber(os.getenv("NUMBER_OF_PROCESSORS"))
|
|
||||||
else
|
|
||||||
THREAD.__CORES = tonumber(io.popen("nproc --all"):read("*n"))
|
|
||||||
end
|
|
||||||
function THREAD.kill()
|
|
||||||
error("Thread was killed!")
|
|
||||||
end
|
|
||||||
function THREAD.getName()
|
function THREAD.getName()
|
||||||
return GLOBAL["$THREAD_NAME"]
|
return GLOBAL["$THREAD_NAME"]
|
||||||
end
|
end
|
||||||
|
|||||||
1
test.lua
1
test.lua
@ -1,3 +1,4 @@
|
|||||||
|
package.path = "./?/init.lua;"..package.path
|
||||||
multi,thread = require("multi"):init()
|
multi,thread = require("multi"):init()
|
||||||
GLOBAL,THREAD = require("multi.integration.threading"):init() -- Auto detects your enviroment and uses what's available
|
GLOBAL,THREAD = require("multi.integration.threading"):init() -- Auto detects your enviroment and uses what's available
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user