diff options
| author | ruki <[email protected]> | 2020-03-08 18:06:23 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-03-08 18:06:23 +0800 |
| commit | 07cb69433cdc6a8d60504ae88cc6251f9c69201a (patch) | |
| tree | 1e4554c8f1941a620c0240d5d2c8e43e2d7789e5 /xmake/modules/private/async | |
| parent | 3f5723c632d0734ce3ea93e174cdf099eeefb543 (diff) | |
fix jobpool
Diffstat (limited to 'xmake/modules/private/async')
| -rw-r--r-- | xmake/modules/private/async/jobpool.lua | 30 | ||||
| -rw-r--r-- | xmake/modules/private/async/runjobs.lua | 14 |
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 { |
