cleaned up thread files

This commit is contained in:
Ryan Ward 2020-04-01 10:10:11 -04:00
parent 61dcb9da01
commit 68908f093b
3 changed files with 21 additions and 39 deletions

View File

@ -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, {

View File

@ -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

View File

@ -47,19 +47,12 @@ local function INIT()
function THREAD.waitFor(name) function THREAD.waitFor(name)
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 <"..__THREADNAME__..">: "..err) error("ERROR in <"..__THREADNAME__..">: "..err)
end end
@ -68,27 +61,19 @@ local function INIT()
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 THREAD_NAME local t = thread.getRunningThread()
return t.Name
end end
function THREAD.getID() function THREAD.getID()
return THREAD_ID local t = thread.getRunningThread()
return t.TID
end end
_G.THREAD_ID = 0 _G.THREAD_ID = 0
function THREAD.sleep(n) THREAD.kill = thread.kill
thread.sleep(n) THREAD.sleep = thread.sleep
end THREAD.hold = thread.hold
function THREAD.hold(n)
return thread.hold(n)
end
return GLOBAL, THREAD return GLOBAL, THREAD
end end
return {init = function() return {init = function()