summaryrefslogtreecommitdiff
path: root/xmake/modules/private/async
diff options
context:
space:
mode:
authorruki <[email protected]>2020-03-08 18:06:23 +0800
committerruki <[email protected]>2020-03-08 18:06:23 +0800
commit07cb69433cdc6a8d60504ae88cc6251f9c69201a (patch)
tree1e4554c8f1941a620c0240d5d2c8e43e2d7789e5 /xmake/modules/private/async
parent3f5723c632d0734ce3ea93e174cdf099eeefb543 (diff)
fix jobpool
Diffstat (limited to 'xmake/modules/private/async')
-rw-r--r--xmake/modules/private/async/jobpool.lua30
-rw-r--r--xmake/modules/private/async/runjobs.lua14
2 files changed, 35 insertions, 9 deletions
diff --git a/xmake/modules/private/async/jobpool.lua b/xmake/modules/private/async/jobpool.lua
index 07f651d11..956ee9300 100644
--- a/xmake/modules/private/async/jobpool.lua
+++ b/xmake/modules/private/async/jobpool.lua
@@ -35,17 +35,41 @@ function jobpool:rootjob()
return self._rootjob
end
+-- new job
+--
+-- @param name the job name
+-- @param run the run command/script
+--
+function jobpool:newjob(name, run)
+ return {name = name, run = run}
+end
+
-- add job to the given job node
--
--- @param rootjob the root job node
+-- @param job the job
+-- @param rootjob the root job node (optional)
+--
+-- or
+--
-- @param name the job name
-- @param run the run command/script
+-- @param rootjob the root job node (optional)
--
-function jobpool:addjob(name, run, rootjob)
+function jobpool:addjob(job_or_name, ...)
+ local args = table.pack(...)
+ local job
+ local rootjob
+ if type(job_or_name) == "table" then
+ job = job_or_name
+ rootjob = args[1]
+ else
+ rootjob = args[2]
+ job = {name = job_or_name, run = args[1]}
+ end
rootjob = rootjob or self:rootjob()
- local job = {name = name, run = run, _parent = rootjob}
rootjob._deps = rootjob._deps or dlist:new()
rootjob._deps:push(job)
+ job._parent = rootjob
self._count = self._count + 1
return job
end
diff --git a/xmake/modules/private/async/runjobs.lua b/xmake/modules/private/async/runjobs.lua
index ce899bc2e..00b8b5f55 100644
--- a/xmake/modules/private/async/runjobs.lua
+++ b/xmake/modules/private/async/runjobs.lua
@@ -46,12 +46,14 @@ end
-- runjobs("test", function (index) print("hello") end, {total = 100, comax = 6, timeout = 1000, timer = function (running_jobs_indices) end})
-- runjobs("test", function () os.sleep(10000) end, {showtips = true})
--
--- local jobs = {}
+-- local jobs = jobpool.new()
+-- local root = jobs:addjob("job/root", function (idx, total)
+-- print(idx, total)
+-- end)
-- for i = 1, 3 do
--- for j = 1, 50 do
--- table.insert(jobs, {priority = i, run = function (idx, job)
--- end})
--- end
+-- local job = jobs:addjob("job/" .. i, function (idx, total)
+-- print(idx, total)
+-- end, root)
-- end
-- runjobs("test", jobs, {comax = 6, timeout = 1000, timer = function (running_jobs_indices) end})
--
@@ -178,7 +180,7 @@ function main(name, jobs, opt)
try
{
function()
- jobfunc(i, total, job)
+ jobfunc(i, total)
end,
catch
{