module mutils.job_manager.execution_manager;

import mutils.container.vector;
import mutils.container_shared.shared_vector;

alias Delegate=void delegate();
class ExecutionManager{
	LockedVector!Delegate delegatesToExecute;
	void initialize(){
		delegatesToExecute=new LockedVector!Delegate();
	}

	void add(Delegate del){
		delegatesToExecute.add(del);
	}

	void update(){
		Vector!Delegate delegates=delegatesToExecute.vectorCopyWithReset();
		//if(delegates is null)return;
		foreach(del;delegates){
			del();
		}
	}

}