Block-Flow: consider usage in ActivityTerm and rectify iteration

Iteration should just yield an Reference to an Extent,
thereby hiding all details of the actual raw storage (char[]).
This can be achieved by usind a wrapper type around a pointer
into the managing vector; from this pointer we may convert
into a vector::iterator with the trick described here

https://stackoverflow.com/a/37101607/444796


Furthermore, continued planning of the Activity-Language,
basically clarified the complete usage scenario for now;
seems all implementable right away without further difficulties
This commit is contained in:
Fischlurch 2023-07-10 18:14:29 +02:00
parent e86cb017a5
commit 3401f18c2c
6 changed files with 298 additions and 14 deletions

View file

@ -151,7 +151,7 @@ namespace lib {
* -# it should be copy constructible
* -# when IterAdapter is supposed to be assignable, then POS should be
* -# it should provide embedded typedefs for pointer, reference and value_type,
* or alternatively resolve these types through specialisation of meta::TypeBinding.
* or alternatively resolve these types through specialisation of meta::ValueTypeBinding.
* -# it should be convertible to the pointer type it declares
* -# dereferencing should yield a type that is convertible to the reference type
* - CON points to the data source of this iterator (typically a data container type)

View file

@ -197,7 +197,7 @@ namespace gear {
currEpoch()
{
REQUIRE (bool(extent));
return static_cast<Epoch&> (extent->access()); ////////////////////////////OOO is it possible to adapt the iterator, so that dereferentiation directly yields the Extent?
return static_cast<Epoch&> (*extent);
}
void*

View file

@ -109,9 +109,31 @@ namespace mem {
ENSURE (get() != nullptr);
return reinterpret_cast<Extent&> (*get());
}
struct iterator
{
using value_type = Extent;
using reference = Extent&;
using pointer = Extent*;
Storage* storageSlot;
explicit
operator bool() const
{
return bool(storageSlot);
}
Extent&
operator* ()
{
REQUIRE (storageSlot and *storageSlot);
return storageSlot->access();
}
};
};
using Extents = std::vector<Storage>;
using RawIter = typename Extents::iterator;
using RawIter = typename Storage::iterator;
/* ==== Management Data ==== */

View file

@ -78,7 +78,7 @@ namespace test {
simpleUsage()
{
Extents extents{5};
Extent& extent = extents.active()->access(); //////////////////////////////////////////OOO better Iter implementation for direct access
Extent& extent = *extents.active();
CHECK (10 == extent.size());
int num = rand() % 1000;
@ -126,7 +126,7 @@ namespace test {
Iter it = extents.active();
CHECK (it);
Extent& extent = it->access(); ////////////////////////////////////////////////////////OOO better Iter implementation for direct access
Extent& extent{*it};
CHECK (10 == extent.size());
int num = rand() % 1000;
@ -135,7 +135,7 @@ namespace test {
++it;
CHECK (it);
Extent& nextEx = it->access();
Extent& nextEx{*it};
CHECK (not isSameObject(extent, nextEx));
nextEx[5] = extent[2] + 1;
CHECK (num == extent[2]);

View file

@ -6853,7 +6853,7 @@ At first sight the link between asset and clip-MO is a simple logical relation b
{{red{Note 1/2015}}} several aspects regarding the relation of clips and single/multichannel media are not yet settled. There is a preliminary implementation in the code base, but it is not sure yet how multichnnel media will actually be modelled. Currently, we tend to treat the channel multiplicity rather as a property of the involved media, i.e we have //one// clip object.</pre>
</div>
<div title="RenderActivity" creator="Ichthyostega" modifier="Ichthyostega" created="202304140145" modified="202307061410" tags="Rendering spec draft" changecount="9">
<div title="RenderActivity" creator="Ichthyostega" modifier="Ichthyostega" created="202304140145" modified="202307102241" tags="Rendering spec draft" changecount="10">
<pre>//Render Activities define the execution language of the render engine.//
The [[Scheduler]] maintains the ability to perform these Activities, in a time-bound fashion, observing dependency relations; activities allow for notification of completed work, tracking of dependencies, timing measurements, re-scheduling of other activities -- and last but not least the dispatch of actual [[render jobs|RenderJob]]. Activities are what is actually enqueued with priority in the scheduler implementation, they are planned for a »µ-tick slot«, activated once when the activation time is reached, and then forgotten. Each Activity is a //verb//, but can be inhibited by conditions and carry operation object data. Formally, activating an Activity equates to a predication, and the subject of that utterance is »the render process«.
@ -6882,6 +6882,9 @@ While Activities are logically polymorphic, they are implemented as »POD with c
Activities are organised into ''chains'', allowing to express relations based on their respective verbs.
There are //standard usage patters,// hard coded into the {{{ActivityLang}}} and expected by the {{{SchedulerCommutator}}}, to express all relevant patterns of operational logic necessary to represent time-bound and dependent playback and render tasks.
!The Activity Language
While the Activities are low-level primitives and can be handled directly by the scheduler, any actual rendering invocation must arrange several Activities into a suitable chain of operations. Thus the actual rendering invocation can be seen as a //sentence of the Activity Language.// Formally speaking, it is a //symbolic term.// Not every possible term (and thus sentence) leads to semantically sound behaviour, and thus the ''Scheduler Interface Setup'' is organised in the form of a //builder notation to construct viable Activity terms.// {{{vault::gear::ActivityLang}}} provides the framework for such builder invocations, and allows to create such terms as transient objects -- connected to the durable {{{Activity}}} records allocated into the [[»BlockFlow« memory manager|SchedulerMemory]] backing the Scheduler operation. The language term is thus a front-end, and exposes suitable extension and configuration points for the JobPlanningPipeline to instruct the necessary Scheduler operations to enact a specific [[render Job|RenderJob]].
</pre>
</div>
<div title="RenderDrive" creator="Ichthyostega" modifier="Ichthyostega" created="202306122212" tags="spec Player draft" changecount="1">
@ -7063,7 +7066,7 @@ Later on we expect a distinct __query subsystem__ to emerge, presumably embeddin
&amp;rarr; QuantiserImpl</pre>
</div>
<div title="Scheduler" creator="Ichthyostega" modifier="Ichthyostega" created="202304140131" modified="202307032227" tags="Rendering spec draft" changecount="12">
<div title="Scheduler" creator="Ichthyostega" modifier="Ichthyostega" created="202304140131" modified="202307102232" tags="Rendering spec draft" changecount="14">
<pre>//Invoke and control the dependency and time based execution of [[render jobs|RenderJob]]//
The Scheduler acts as the central hub in the implementation of the RenderEngine and coordinates the //processing resources// of the application. Regarding architecture, the Scheduler is located in the Vault-Layer and //running// the Scheduler is equivalent to activating the »Vault Subsystem«. An EngineFaçade acts as entrance point, providing high-level render services to other parts of the application: [[render jobs|RenderJob]] can be activated under various timing and dependency constraints. Internally, the implementation is segregated into two layers
;Layer-2: Coordination
@ -7084,6 +7087,9 @@ The [[Language of render activities|RenderActivity]] forms the interface to the
These ''Worker Threads'' will perform actual render activities most of the time (or be idle). However -- idle workers contend for new work, and for doing so, they //also perform the internal scheduler management activities.// As a consequence, all Scheduler coordination and [[memory management|SchedulerMemory]] is ''performed non-concurrent'': only a single Worker can acquire the {{{GroomingToken}}} and will then perform managment work until the next render activity is encountered at the top side of the //priority queue.//
!!!Instructing the Scheduler
The Scheduler is now considered an implementation-level facility with an interface specifically tailored at the JobPlanningPipeline: the [[»Render Activity Language«|RenderActivity]]. This //builder-style// setup allows to construct an ''~Activity-Term'' to model all the structural properties of an individual rendering invocation -- it is compriesed of a network of {{{Activity}}} records, which can be directly handled by the Scheduler.
&amp;rarr; [[Activity|RenderActivity]]
&amp;rarr; [[Memory|SchedulerMemory]]
&amp;rarr; [[Workers|SchedulerWorker]]

View file

@ -69785,9 +69785,9 @@
<arrowlink COLOR="#f4fec9" DESTINATION="ID_1928295133" ENDARROW="Default" ENDINCLINATION="-1068;-69;" ID="Arrow_ID_362199078" STARTARROW="None" STARTINCLINATION="1381;58;"/>
<icon BUILTIN="full-3"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681424692274" ID="ID_1926192234" MODIFIED="1684972006686" STYLE="bubble" TEXT="Setup f&#xfc;r scheduler::Activity anlegen">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1681424692274" ID="ID_1926192234" MODIFIED="1689001196260" STYLE="bubble" TEXT="Setup f&#xfc;r scheduler::Activity anlegen">
<edge COLOR="#725330"/>
<arrowlink COLOR="#f4fec9" DESTINATION="ID_688439359" ENDARROW="Default" ENDINCLINATION="-522;-149;" ID="Arrow_ID_1352278228" STARTARROW="None" STARTINCLINATION="1598;114;"/>
<arrowlink COLOR="#f4fec9" DESTINATION="ID_688439359" ENDARROW="Default" ENDINCLINATION="-557;-136;" ID="Arrow_ID_1352278228" STARTARROW="None" STARTINCLINATION="1598;114;"/>
<icon BUILTIN="full-4"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681424715326" ID="ID_566775911" MODIFIED="1681425341556" STYLE="bubble" TEXT="Job-Datenstruktur neu konzipieren">
@ -76586,6 +76586,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998359233" HGAP="15" ID="ID_1834678491" MODIFIED="1688998454771" TEXT="ActivityTerm f&#xfc;r Scheduler erstellen" VSHIFT="1">
<linktarget COLOR="#fc5172" DESTINATION="ID_1834678491" ENDARROW="Default" ENDINCLINATION="-410;29;" ID="Arrow_ID_139741662" SOURCE="ID_1642755650" STARTARROW="None" STARTINCLINATION="-221;22;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#338800" CREATED="1686793470108" FOLDED="true" HGAP="-9" ID="ID_1024827381" MODIFIED="1687226399165" TEXT="JobPlanning_test" VSHIFT="7">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686793496442" ID="ID_1934790434" MODIFIED="1686873178829" TEXT="simpleUsage">
@ -77013,6 +77017,11 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1686839630592" ID="ID_172082311" MODIFIED="1686839636872" TEXT="Pipeline-Builder">
<icon BUILTIN="pencil"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998333890" ID="ID_1642755650" MODIFIED="1688998601392" TEXT="Integration mit Scheduler">
<arrowlink COLOR="#fc5172" DESTINATION="ID_1834678491" ENDARROW="Default" ENDINCLINATION="-410;29;" ID="Arrow_ID_139741662" STARTARROW="None" STARTINCLINATION="-221;22;"/>
<linktarget COLOR="#ff3681" DESTINATION="ID_1642755650" ENDARROW="Default" ENDINCLINATION="-874;84;" ID="Arrow_ID_846448701" SOURCE="ID_1433064275" STARTARROW="None" STARTINCLINATION="-223;-228;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1686839683285" ID="ID_36707137" MODIFIED="1687191788043" TEXT="JobPlanning">
<icon BUILTIN="pencil"/>
@ -77760,9 +77769,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681086215092" ID="ID_688439359" MODIFIED="1681425384986" TEXT="Activity">
<linktarget COLOR="#f4fec9" DESTINATION="ID_688439359" ENDARROW="Default" ENDINCLINATION="-522;-149;" ID="Arrow_ID_1352278228" SOURCE="ID_1926192234" STARTARROW="None" STARTINCLINATION="1598;114;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1681086215092" ID="ID_688439359" MODIFIED="1689001361598" TEXT="Activity">
<linktarget COLOR="#f4fec9" DESTINATION="ID_688439359" ENDARROW="Default" ENDINCLINATION="-557;-136;" ID="Arrow_ID_1352278228" SOURCE="ID_1926192234" STARTARROW="None" STARTINCLINATION="1598;114;"/>
<linktarget COLOR="#daf1b4" DESTINATION="ID_688439359" ENDARROW="Default" ENDINCLINATION="-190;833;" ID="Arrow_ID_345974066" SOURCE="ID_1628186610" STARTARROW="None" STARTINCLINATION="2086;-130;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681086269493" ID="ID_305659400" MODIFIED="1681086275809" TEXT="Entwurf : neues Konzept">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1681086278139" ID="ID_1476636286" MODIFIED="1681086349598" TEXT="Idee">
@ -78045,6 +78055,223 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688997822688" HGAP="33" ID="ID_469443507" MODIFIED="1688997837632" TEXT="ActivityTerm" VSHIFT="4">
<icon BUILTIN="flag-pink"/>
<node CREATED="1688997860691" ID="ID_601062393" MODIFIED="1688997898044" TEXT="Builder-Struktur &#x2014; macht einen Activity-Graphen semantisch zug&#xe4;nglich">
<icon BUILTIN="info"/>
<node CREATED="1688997906652" ID="ID_1309569324" MODIFIED="1688997918758" TEXT="wird nur in einem lokalen / transienten Kontext erzeugt"/>
<node CREATED="1688997919468" ID="ID_1319322261" MODIFIED="1688997929790" TEXT="verweist auf anderweitig allozierte Activities"/>
<node CREATED="1688997930400" ID="ID_1600642757" MODIFIED="1688997942731" TEXT="f&#xfc;gt diesen weitere Activities und Vernetzungen hinzu"/>
<node CREATED="1688997948702" ID="ID_1547410219" MODIFIED="1688997965264" TEXT="h&#xe4;lt Referenzen auf semantisch relevante Erweiterungspunkte"/>
<node CREATED="1688997979714" ID="ID_788885613" MODIFIED="1688997992154" TEXT="nach M&#xf6;glichkeit monomorph implementiert">
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998623675" ID="ID_1567695201" MODIFIED="1688998629027" TEXT="usage-Scenarios">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998631898" ID="ID_697542787" MODIFIED="1688998652420" TEXT="erst mal nur die &#xbb;einfachen Render-Jobs&#xab;">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998654071" ID="ID_923708494" MODIFIED="1688998677456" TEXT="Frame-Render-Job">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688998682403" ID="ID_647428374" MODIFIED="1688998983215" TEXT="zu erstellen (Job komplett)">
<icon BUILTIN="info"/>
<node CREATED="1688998699273" ID="ID_670845823" MODIFIED="1688998702452" TEXT="POST">
<node CREATED="1688998706075" ID="ID_1218562853" MODIFIED="1688998714035" TEXT="Zeitfenster aus Job-Planning"/>
<node CREATED="1688998714647" ID="ID_1212520042" MODIFIED="1688998724793" TEXT="fr&#xfc;hestmoglich Start-Zeit / Deadline"/>
</node>
<node CREATED="1688998737324" ID="ID_1359190642" MODIFIED="1688998829651" TEXT="GATE">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998831183" ID="ID_158897194" MODIFIED="1688998848054" TEXT="Inhibitor-Mechanismus mu&#xdf; zu fr&#xfc;he Freigabe verhindern">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1688998857100" ID="ID_875955760" MODIFIED="1688998863575" TEXT="Deadline aus POST-Deadline"/>
<node CREATED="1688998870698" ID="ID_40546286" MODIFIED="1688998883188" TEXT="Latch zun&#xe4;chst nicht gesperrt"/>
</node>
<node CREATED="1688998890863" ID="ID_425722709" MODIFIED="1688998934085" TEXT="TIMESTART">
<node CREATED="1688998900504" ID="ID_1774286611" MODIFIED="1688998907001" TEXT="das ist der Gefahren&#xfc;bergang"/>
</node>
<node CREATED="1688998913869" ID="ID_556268071" MODIFIED="1688998927398" TEXT="INVOKE"/>
<node CREATED="1689000645022" ID="ID_1088539627" MODIFIED="1689000647216" TEXT="FEED"/>
<node CREATED="1688998935319" ID="ID_321972894" MODIFIED="1688998937349" TEXT="TIMESTOP"/>
<node CREATED="1688998940449" ID="ID_773816766" MODIFIED="1688998948955" TEXT="(optional) NOTIFY"/>
</node>
<node CREATED="1689000122273" ID="ID_1422583341" MODIFIED="1689000141923" TEXT="Ankerpunkte">
<arrowlink COLOR="#598fcf" DESTINATION="ID_942300026" ENDARROW="Default" ENDINCLINATION="11;-24;" ID="Arrow_ID_1092205676" STARTARROW="None" STARTINCLINATION="-232;48;"/>
<node CREATED="1689000157534" ID="ID_1675125320" MODIFIED="1689000220860" TEXT="Gate wird nur bei Bedarf eingeschleift"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689000188849" ID="ID_1979509352" MODIFIED="1689000216482" TEXT="dies mu&#xdf; aber vor dem Instruct() passieren">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998666581" ID="ID_796453137" MODIFIED="1688998677457" TEXT="Media-Decoder-Job">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688998682403" ID="ID_60823636" MODIFIED="1688998995125" TEXT="zu erstellen">
<icon BUILTIN="info"/>
<node CREATED="1688998997137" ID="ID_542318622" MODIFIED="1688999010459" TEXT="IO-Trigger">
<node CREATED="1688998699273" ID="ID_306994429" MODIFIED="1688998702452" TEXT="POST">
<node CREATED="1688998706075" ID="ID_440995456" MODIFIED="1688998714035" TEXT="Zeitfenster aus Job-Planning"/>
<node CREATED="1688998714647" ID="ID_921244873" MODIFIED="1688998724793" TEXT="fr&#xfc;hestmoglich Start-Zeit / Deadline"/>
</node>
<node CREATED="1688998737324" ID="ID_93843458" MODIFIED="1688999147130" TEXT="(optional) GATE"/>
<node CREATED="1688998890863" ID="ID_1895338828" MODIFIED="1688998934085" TEXT="TIMESTART">
<node CREATED="1688998900504" ID="ID_518096052" MODIFIED="1688998907001" TEXT="das ist der Gefahren&#xfc;bergang"/>
</node>
<node CREATED="1688998913869" ID="ID_55339592" MODIFIED="1688998927398" TEXT="INVOKE"/>
<node CREATED="1689000651643" ID="ID_1778896069" MODIFIED="1689000653167" TEXT="FEED"/>
</node>
<node CREATED="1688999011414" ID="ID_628699211" MODIFIED="1688999028770" TEXT="IO-Callback">
<node CREATED="1688999092397" ID="ID_406811025" MODIFIED="1688999110811" TEXT="(ggfs: Callback-entrance Closure)"/>
<node CREATED="1688998935319" ID="ID_1850296698" MODIFIED="1688998937349" TEXT="TIMESTOP"/>
<node CREATED="1688998940449" ID="ID_1383425943" MODIFIED="1688999051414" TEXT="NOTIFY"/>
</node>
</node>
<node CREATED="1689000122273" ID="ID_930900062" MODIFIED="1689000254611" TEXT="Ankerpunkte">
<arrowlink COLOR="#598fcf" DESTINATION="ID_942300026" ENDARROW="Default" ENDINCLINATION="10;-28;" ID="Arrow_ID_398092432" STARTARROW="None" STARTINCLINATION="-197;41;"/>
<node CREATED="1689000157534" ID="ID_1814378402" MODIFIED="1689000268524" TEXT="Gate nur bei Bedarf"/>
<node CREATED="1689000270813" ID="ID_360882448" MODIFIED="1689000284794" TEXT="Flag f&#xfc;r Asynchronen Job"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999761263" ID="ID_1842215336" MODIFIED="1688999765244" TEXT="Planungs-Job">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688999770170" ID="ID_1797355919" MODIFIED="1688999777385" TEXT="zu erstellen">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999786193" ID="ID_1441495224" MODIFIED="1688999904219" TEXT="Achtung: hier kein &#xdc;bergang in die Hintergrundverarbeitung">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Das ergibt sich unmittelbar aus den Prinzipien dieses Designs: Job-Planung l&#228;uft auf das Erstellen von Activities hinaus, und dies bedingt Speicherverwaltung &#8212; welche der grundlegenden Entscheidung gem&#228;&#223; nur in einem Thread (unter GroomingToken) stattfinden darf
</p>
</body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1689000396493" ID="ID_886737877" MODIFIED="1689000398897" TEXT="POST"/>
<node CREATED="1689000405548" ID="ID_436497106" MODIFIED="1689000438079" TEXT="INVOKE"/>
<node CREATED="1689000655579" ID="ID_379435394" MODIFIED="1689000657094" TEXT="FEED"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689000757661" ID="ID_1172817933" MODIFIED="1689000760245" TEXT="Tick">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1689000805829" ID="ID_1260644212" MODIFIED="1689000811102" TEXT="einfache Builder-Funktion"/>
<node CREATED="1689000868150" ID="ID_993292699" MODIFIED="1689000876384" TEXT="wird nur einmal erzeugt"/>
<node CREATED="1689000876941" ID="ID_916463216" MODIFIED="1689000882431" TEXT="reproduziert sich dann selbst"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999175080" HGAP="49" ID="ID_942300026" MODIFIED="1689000363284" TEXT="Ankerpunkte" VSHIFT="34">
<linktarget COLOR="#598fcf" DESTINATION="ID_942300026" ENDARROW="Default" ENDINCLINATION="11;-24;" ID="Arrow_ID_1092205676" SOURCE="ID_1422583341" STARTARROW="None" STARTINCLINATION="-232;48;"/>
<linktarget COLOR="#598fcf" DESTINATION="ID_942300026" ENDARROW="Default" ENDINCLINATION="10;-28;" ID="Arrow_ID_398092432" SOURCE="ID_930900062" STARTARROW="None" STARTINCLINATION="-197;41;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688999178393" ID="ID_427652015" MODIFIED="1688999914355" TEXT="der erstellte POST"/>
<node CREATED="1688999963976" ID="ID_236229726" MODIFIED="1689000087481" TEXT="Anf&#xfc;gepunkt f&#xfc;r das GATE">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_236229726" ENDARROW="Default" ENDINCLINATION="79;6;" ID="Arrow_ID_644412602" SOURCE="ID_684188906" STARTARROW="None" STARTINCLINATION="82;7;"/>
</node>
<node CREATED="1688999981512" ID="ID_684188906" MODIFIED="1689000087481" TEXT="Gate zum Aufschalten eines NOTIFY">
<arrowlink DESTINATION="ID_236229726" ENDARROW="Default" ENDINCLINATION="79;6;" ID="Arrow_ID_644412602" STARTARROW="None" STARTINCLINATION="82;7;"/>
</node>
<node CREATED="1688999996294" ID="ID_770398242" MODIFIED="1689000292360" TEXT="Anf&#xfc;gepunkt f&#xfc;r ein abschliependes NOTIFY"/>
<node CREATED="1689000307018" ID="ID_800596419" MODIFIED="1689000317828" TEXT="Schalter synchron/asynchron"/>
<node CREATED="1689000503719" ID="ID_1847275936" MODIFIED="1689000627698" TEXT="Schalter Work/Meta"/>
<node CREATED="1689000328599" ID="ID_523939975" MODIFIED="1689000343817" TEXT="Closure / Zugangspunkt f&#xfc;r IO-Callback bereitstellen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998180822" ID="ID_462121305" MODIFIED="1688998232122" TEXT="ActivityLang &#x2261; Builder-Setup">
<linktarget COLOR="#b14f6e" DESTINATION="ID_462121305" ENDARROW="Default" ENDINCLINATION="-76;7;" ID="Arrow_ID_1396143437" SOURCE="ID_1433064275" STARTARROW="None" STARTINCLINATION="-74;-111;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999189055" ID="ID_1477089281" MODIFIED="1688999200359" TEXT="Dependency-Injection bereitstellen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999200998" ID="ID_1334461256" MODIFIED="1688999206830" TEXT="Term konstruieren">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999216020" ID="ID_1652417442" MODIFIED="1689000686850" TEXT="Nutzungs-Zyklus">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999221795" ID="ID_1575286737" MODIFIED="1688999234827" TEXT="der Term selbst ist transient">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999245632" ID="ID_1036154230" MODIFIED="1689000708795">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
aus dem Term k&#246;nnen die
</p>
<p>
Instruct-Daten gewonnen werden
</p>
</body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999304504" ID="ID_564520426" MODIFIED="1688999317361" TEXT="der Term bleibt auch nach dem Instruct() valide">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999331796" ID="ID_1974598754" MODIFIED="1688999364152" TEXT="Builder-Operationen sind vorher g&#xfc;ltig">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999346517" ID="ID_124536874" MODIFIED="1688999585602">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
Builder-Operationen k&#246;nnen auch nachher
</p>
<p>
(in Grenzen) noch stattfinden
</p>
</body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688999377072" ID="ID_1659636663" MODIFIED="1688999591757" TEXT="&#xbb;auf eigene Gefahr&#xab;">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1688999391407" ID="ID_628427899" MODIFIED="1688999597430" TEXT="&#xc4;nderungen an bereits ausgel&#xf6;sten Activities bleiben wirkunslos">
<icon BUILTIN="info"/>
</node>
<node CREATED="1688999410426" ID="ID_769912313" MODIFIED="1688999515283" TEXT="ungepr&#xfc;ft / Job-Planung mu&#xdf; f&#xfc;r Zeitpuffer sorgen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
das Job-Planning &#8222;mu&#223; wissen was es tut&#8220; &#8212; typischerweise m&#252;ssen alle Zeitfenster hinreichend weit in der Zukunft liegen
</p>
</body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999453988" ID="ID_340197441" MODIFIED="1688999467854" TEXT="Timing/concurrency-Fehler vermeiden">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688999538849" ID="ID_446363704" MODIFIED="1688999552715" TEXT="gef&#xe4;hrlich ist das Anf&#xfc;gen von Prerequisites"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688999553494" ID="ID_370064738" MODIFIED="1688999572660" TEXT="Analyse der Concurrency-situation">
<icon BUILTIN="flag-pink"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999319686" ID="ID_1484039920" MODIFIED="1688999329565" TEXT="der Term kann jederzeit ohne Seiteneffekt gel&#xf6;scht werden">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688999694596" ID="ID_504534684" MODIFIED="1688999754111" TEXT="Term-Build setzt GroomingToken vorraus">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
wenig Raum f&#252;r Diskussionen &#8212; und zwar wegen der Memory-Allokation
</p>
</body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
@ -78061,6 +78288,26 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680563595176" ID="ID_773353840" MODIFIED="1680563601552" TEXT="Aufruf/Verdrahtung im Player">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998017511" ID="ID_562682504" MODIFIED="1688998030763" TEXT="PlayProcess erstellen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998031595" ID="ID_513391469" MODIFIED="1688998036739" TEXT="CalcStream bereitstellen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998038105" ID="ID_1573232892" MODIFIED="1688998051496" TEXT="Dispatcher / RenderEnvironmentClosure">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998058288" ID="ID_179973201" MODIFIED="1688998071494" TEXT="RenderDrive / Job-Planning-Pipeline">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998090299" ID="ID_1193621030" MODIFIED="1688998096268" TEXT="ActivityTerm aufbauen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998158202" ID="ID_1433064275" MODIFIED="1688998601392" TEXT="ActivityLang in RenderDrive integrieren">
<arrowlink COLOR="#b14f6e" DESTINATION="ID_462121305" ENDARROW="Default" ENDINCLINATION="-76;7;" ID="Arrow_ID_1396143437" STARTARROW="None" STARTINCLINATION="-74;-111;"/>
<arrowlink COLOR="#ff3681" DESTINATION="ID_1642755650" ENDARROW="Default" ENDINCLINATION="-874;84;" ID="Arrow_ID_846448701" STARTARROW="None" STARTINCLINATION="-223;-228;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680564304940" ID="ID_1657236591" MODIFIED="1680565125463" TEXT="Scheduler entwerfen">
<linktarget COLOR="#f6e1c2" DESTINATION="ID_1657236591" ENDARROW="Default" ENDINCLINATION="-1219;85;" ID="Arrow_ID_49470357" SOURCE="ID_59027079" STARTARROW="None" STARTINCLINATION="-2189;368;"/>
@ -79674,6 +79921,15 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node CREATED="1689000989238" ID="ID_1795801593" MODIFIED="1689001000556" TEXT="Activity-Language">
<node CREATED="1689001006316" ID="ID_279615661" MODIFIED="1689001019758" TEXT="stellt das Interface und das Arbeits-Agens dar">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1689001233653" ID="ID_1628186610" MODIFIED="1689001361598" TEXT="Entwurf (&#xbb;Playback Vertical Slice&#xab;)">
<arrowlink COLOR="#daf1b4" DESTINATION="ID_688439359" ENDARROW="Default" ENDINCLINATION="-190;833;" ID="Arrow_ID_345974066" STARTARROW="None" STARTINCLINATION="2086;-130;"/>
<icon BUILTIN="pencil"/>
</node>
</node>
</node>
</node>
<node CREATED="1685313728009" ID="ID_1684013116" MODIFIED="1685313732179" TEXT="Architektur">
@ -79976,7 +80232,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1685321426804" ID="ID_746352881" MODIFIED="1685321444736" TEXT="hier werden grunds&#xe4;tzlich neue Activities auf den Weg geschickt"/>
<node CREATED="1685321445292" ID="ID_79914114" MODIFIED="1685321462397" TEXT="aber auch Activities rekursiv re-priorisiert"/>
</node>
<node CREATED="1685321483574" ID="ID_1477143023" MODIFIED="1685321501986" TEXT="Tile-based Activity Storage">
<node CREATED="1685321483574" ID="ID_1477143023" MODIFIED="1689001040267" TEXT="Epoch-based Activity Storage">
<node COLOR="#5b280f" CREATED="1685321607585" FOLDED="true" ID="ID_1565711693" MODIFIED="1687733705351">
<richcontent TYPE="NODE"><html>
<head>