diff --git a/multitask/lib/multitask.lua b/multitask/lib/multitask.lua index 3af525b..86117a0 100644 --- a/multitask/lib/multitask.lua +++ b/multitask/lib/multitask.lua @@ -3,18 +3,41 @@ local mt = {} mt.newPool = function() local pool = {} pool.threads = {} + pool.namedThreads = {} pool.threadcount = 0 pool.clear = function() pool.threads = {} + pool.namedThreads = {} + pool.threadcount = 0 end pool.add = function(fn, options) options = options or {} options.co = coroutine.create(fn) pool.threads[options.co] = options + if options.name then + pool.namedThreads[options.name] = options + end pool.threadcount = pool.threadcount + 1 os.queueEvent("pool_fn_added",options,pool) + return options.co + end + + pool.rm = function(name) + if not pool.namedThreads[name] then + return false + end + pool.threads[pool.namedThreads[name].co] = nil + pool.namedThreads[name] = nil + pool.threadcount = pool.threadcount - 1 + return true + end + + pool.addFile = function(filename, options) + pool.add(function() + dofile(filename) + end,options) end pool.run = function(terminable) diff --git a/multitask/pkgmeta.ltn b/multitask/pkgmeta.ltn index d0e4a4a..fb2804d 100644 --- a/multitask/pkgmeta.ltn +++ b/multitask/pkgmeta.ltn @@ -1,5 +1,5 @@ { - ["version"] = "0.1.0", + ["version"] = "0.1.1", ["dependencies"] = {}, ["description"] = "Adds convinientish multitasking functionality.", ["files"] = {