parallelize

This commit is contained in:
RandomityGuy 2022-11-01 00:17:13 +05:30
parent 751f4d1797
commit fbb336dc0a

View file

@ -5,8 +5,12 @@ import src.ResourceLoader;
class ResourceLoaderWorker {
var tasks:Array<(() -> Void)->Void> = [];
var paralleltasks:Array<(() -> Void)->Void> = [];
var onFinish:() -> Void;
var parallelstarted:Bool = false;
public function new(onFinish:() -> Void) {
this.onFinish = onFinish;
}
@ -16,17 +20,36 @@ class ResourceLoaderWorker {
}
public function run() {
var task = tasks.shift();
task(() -> {
if (tasks.length > 0) {
run();
} else {
onFinish();
if (!parallelstarted && paralleltasks.length > 0) {
parallelstarted = true;
var taskcount = paralleltasks.length;
var tasksdone = 0;
for (task in paralleltasks) {
task(() -> {
tasksdone++;
if (tasksdone == taskcount) {
this.run();
}
});
}
});
return;
}
if (tasks.length > 0) {
var task = tasks.shift();
task(() -> {
if (tasks.length > 0) {
run();
} else {
onFinish();
}
});
} else {
onFinish();
}
}
public function loadFile(path:String) {
addTask(fwd -> ResourceLoader.load(path).entry.load(fwd));
paralleltasks.push(fwd -> ResourceLoader.load(path).entry.load(fwd));
}
}