Parallel Manager with ease
local ParallelManagerMeta = {}
local ParallelManager = {}
function ParallelManager.new(worker : Script, core : number)
local self = setmetatable({},{__index = ParallelManagerMeta})
self.__actors = {}
self.worker = worker
self.Core = core
self.CoreFolder = Instance.new("Folder")
self.CoreFolder.Name = "ParallelManager_"..os.clock()
self.CoreIndex = 0
for i = 0, core-1 do
local actor = Instance.new("Actor")
local thread = self.worker:Clone()
thread.Parent = actor
self.__actors[i] = actor
actor.Parent = self.CoreFolder
end
self.CoreFolder.Parent = script
return self
end
function ParallelManagerMeta:GetNextActor() : Actor
self.CoreIndex += 1
self.CoreIndex %= self.Core
return self.__actors[self.CoreIndex]
end
function ParallelManagerMeta:Destroy()
for i, actor in self.__actors do
actor:Destroy()
end
table.clear(self.__actors)
self.CoreFolder:Destroy()
setmetatable(self,nil)
end
return ParallelManager
