with Dynamic_Tasks; use Dynamic_Tasks;
with Dynamic_Tasks_Finalizer; use Dynamic_Tasks_Finalizer;
with Scoped_Tasks; use Scoped_Tasks;
with Scoped_Tasks_Finalizer; use Scoped_Tasks_Finalizer;
procedure Scoped_vs_Dynamic_Finalization is
Array_of_Scoped_Tasks : array (Few_Colours) of Scoped_Task;
Array_of_Dynamic_Tasks : array (Few_Ids) of Dynamic_Task_Ptr;
begin
for i in Array_of_Scoped_Tasks'Range loop
Finalizer.Register (Id => Array_of_Scoped_Tasks (i)'Identity);
Array_of_Scoped_Tasks (i).Hand_over_Task_Id (i);
end loop;
for i in Array_of_Dynamic_Tasks'Range loop
Array_of_Dynamic_Tasks (i).all.Start;
Finalizer_Deallocator.Register (Array_of_Dynamic_Tasks (i));
Array_of_Dynamic_Tasks (i) := new Dynamic_Task (i);
end loop;
end Scoped_vs_Dynamic_Finalization;