Block-Flow: consider data storage for render activities
- decision to favour small memory footprint - rather use several Activity records to express invocation - design Activity record as »POD with constructor« - conceptually, Activity is polymorphic, but on implementation level, this is "folded down" into union-based data storage, layering accessor functions on top
This commit is contained in:
parent
4ac995548a
commit
f34ecafa1a
5 changed files with 416 additions and 19 deletions
|
|
@ -47,6 +47,8 @@
|
|||
|
||||
|
||||
#include "vault/common.hpp"
|
||||
#include "vault/gear/job.h"
|
||||
#include "lib/time/timevalue.hpp"
|
||||
//#include "lib/symbol.hpp"
|
||||
//#include "lib/util.hpp"
|
||||
|
||||
|
|
@ -56,33 +58,130 @@
|
|||
namespace vault{
|
||||
namespace gear {
|
||||
|
||||
using lib::time::TimeValue;
|
||||
using lib::time::TimeVar;
|
||||
// using util::isnil;
|
||||
// using std::string;
|
||||
|
||||
/**
|
||||
* Wrapper to hold Time values in trivially constructible union.
|
||||
* By an unfortunate design decision, lib::time::Time values are
|
||||
* non-copyable, which prevents placing them into POD data
|
||||
*
|
||||
* @todo 7/2023 this decision should be reverted //////////////////////////////////////////////////////////TICKET #1261 : reconsider (im)mutability of time entities
|
||||
*/
|
||||
class Instant
|
||||
{
|
||||
int64_t microTick_;
|
||||
|
||||
public:
|
||||
Instant() =default; // @suppress("Class members should be properly initialized")
|
||||
|
||||
Instant(TimeValue time)
|
||||
: microTick_{_raw(time)}
|
||||
{ }
|
||||
|
||||
operator TimeVar() const
|
||||
{
|
||||
return TimeValue{microTick_};
|
||||
}
|
||||
|
||||
// default copy acceptable
|
||||
};
|
||||
|
||||
/**
|
||||
* Term to describe an Activity,
|
||||
* to happen within the Scheduler's control flow.
|
||||
* @note Activity is a »POD with constructor«
|
||||
* - trivially *destructible*
|
||||
* - trivially *copyable*
|
||||
* - standard layout
|
||||
*/
|
||||
class Activity
|
||||
{
|
||||
|
||||
public:
|
||||
enum Verb {INVOKE ///< dispatches a JobFunctor into a worker thread
|
||||
,DEPEND ///< verify a given number of dependencies has been satisfied
|
||||
/** All possible kinds of activities */
|
||||
enum Verb {INVOKE ///< dispatch a JobFunctor into a worker thread
|
||||
,TIMESTART ///< signal start of some processing (for timing measurement)
|
||||
,TIMESTOP ///< correspondingly signal end of some processing
|
||||
,NOTIFY ///< push a message to another Activity
|
||||
,PROBE ///< evaluate a condition and inhibit another target Activity
|
||||
,GATE ///< probe window + count-down; activate next Activity, else re-schedule
|
||||
,FEED ///< supply additional payload data for a preceding Activity
|
||||
,POST ///< post a message providing a chain of further time-bound Activities
|
||||
,TICK ///< internal engine »heart beat« for internal maintenance hook(s)
|
||||
};
|
||||
|
||||
const Verb verb_;
|
||||
|
||||
/**
|
||||
* Activities are organised into _chains_
|
||||
* to represent _relations_ based on verbs.
|
||||
*/
|
||||
Activity* next;
|
||||
|
||||
|
||||
/* === Activity Data Arguments === */
|
||||
|
||||
/** Payload data to provide */
|
||||
struct Feed
|
||||
{
|
||||
size_t one;
|
||||
size_t two;
|
||||
};
|
||||
|
||||
/** Timing observation to propagate */
|
||||
struct Timing
|
||||
{
|
||||
Instant instant;
|
||||
size_t quality;
|
||||
};
|
||||
|
||||
/** Access gate condition to evaluate */
|
||||
struct Condition
|
||||
{
|
||||
int rest; ///< alive while rest > 0
|
||||
Instant dead; ///< alive while time < dead
|
||||
};
|
||||
|
||||
/** Time window to define for activation */
|
||||
struct TimeWindow
|
||||
{
|
||||
Instant life;
|
||||
Instant dead;
|
||||
};
|
||||
|
||||
/** External work functor to activate */
|
||||
struct Invocation
|
||||
{
|
||||
JobFunctor* task;
|
||||
Instant time;
|
||||
};
|
||||
|
||||
/** Notification towards another Activity */
|
||||
struct Notification
|
||||
{
|
||||
Activity* target;
|
||||
size_t report;
|
||||
};
|
||||
|
||||
|
||||
/** Storage of Argument data dependent on Activity::verb_ */
|
||||
union ArgumentData
|
||||
{
|
||||
Feed feed;
|
||||
Timing timing;
|
||||
Condition condition;
|
||||
TimeWindow timeWindow;
|
||||
Invocation invocation;
|
||||
Notification notification;
|
||||
};
|
||||
ArgumentData data_;
|
||||
|
||||
|
||||
explicit
|
||||
Activity (Verb verb)
|
||||
: verb_{verb}
|
||||
, next{nullptr}
|
||||
{ }
|
||||
|
||||
// using default copy/assignment
|
||||
|
|
|
|||
|
|
@ -62,8 +62,8 @@ namespace gear {
|
|||
/**
|
||||
* Scheduler Layer-2 : invocation.
|
||||
*
|
||||
* @see SomeSystem
|
||||
* @see NA_test
|
||||
* @see Scheduler
|
||||
* @see SchedulerInvocation_test
|
||||
*/
|
||||
class SchedulerInvocation
|
||||
: util::NonCopyable
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ using test::Test;
|
|||
|
||||
|
||||
namespace vault{
|
||||
namespace mem {
|
||||
namespace gear {
|
||||
namespace test {
|
||||
|
||||
// using lib::time::FrameRate;
|
||||
|
|
@ -72,6 +72,10 @@ namespace test {
|
|||
void
|
||||
simpleUsage()
|
||||
{
|
||||
// Activities are »POD with constructor«
|
||||
Activity tick(Activity::TICK);
|
||||
CHECK (tick.verb_ == Activity::TICK);
|
||||
CHECK (tick.next == nullptr);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -99,4 +103,4 @@ namespace test {
|
|||
|
||||
|
||||
|
||||
}}} // namespace vault::mem::test
|
||||
}}} // namespace vault::gear::test
|
||||
|
|
|
|||
|
|
@ -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="202307042331" tags="Rendering spec draft" changecount="5">
|
||||
<div title="RenderActivity" creator="Ichthyostega" modifier="Ichthyostega" created="202304140145" modified="202307061410" tags="Rendering spec draft" changecount="9">
|
||||
<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«.
|
||||
|
||||
|
|
@ -6861,21 +6861,28 @@ The [[Scheduler]] maintains the ability to perform these Activities, in a time-b
|
|||
;invoke
|
||||
:dispatches a JobFunctor into an appropriate worker thread, based on the job definition's execution spec
|
||||
:no further dependency checks; Activities attached to the job are re-dispatched after the job function's completion
|
||||
;depend
|
||||
:verify a given number of dependencies has been satisfied, otherwise inhibit the indicated target Activity
|
||||
;timestart
|
||||
:signal start of some processing -- for the purpose of timing measurement, but also to detect crashed tasks
|
||||
;timestop
|
||||
:correspondingly signal end of some processing
|
||||
;notify
|
||||
:push a message to another Activity or process record
|
||||
;probe
|
||||
:invoke a closure within engine context; inhibit another target Activity, depending on the result.
|
||||
;gate
|
||||
:probe a launch window [start…deadline[ and check a count-down latch ⟹activate next Activity | else re-schedule @self into the future
|
||||
;feed
|
||||
:supply additional payload data for a preceding Activity
|
||||
;post
|
||||
:post a message providing a chain of further time-bound Activities
|
||||
;tick
|
||||
:internal engine »heart beat« -- invoke internal maintenance hook(s)
|
||||
</pre>
|
||||
|
||||
!Data organisation
|
||||
Activities are processed within a //performance critical part of the application// -- and are thus subject to [[Scheduler memory management|SchedulerMemory]].
|
||||
While Activities are logically polymorphic, they are implemented as »POD with constructor« -- meaning that they are classes with [[standard layout|https://en.cppreference.com/w/cpp/named_req/StandardLayoutType]] and at least a [[trivial destructor|https://en.cppreference.com/w/cpp/language/destructor#Trivial_destructor]], allowing to just place them into a memory block and forget about them (without need to call any non-trivial functions). The ''Argument data'' depends on the //actual verb// and is thus placed into a union, with access functions to ensure proper usage of the data fields (while it is always possible to access the data field directly). Since Activities are allocated a lot, small memory footprint is favoured, and thus some significant information -- notably the //time window// for activation of each Activity -- is defined //contextually.//
|
||||
|
||||
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.
|
||||
</pre>
|
||||
</div>
|
||||
<div title="RenderDrive" creator="Ichthyostega" modifier="Ichthyostega" created="202306122212" tags="spec Player draft" changecount="1">
|
||||
<pre>//the active core of each [[calculation stream|CalcStream]]//
|
||||
|
|
|
|||
|
|
@ -74659,6 +74659,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node COLOR="#435e98" CREATED="1685986766172" HGAP="28" ID="ID_491497133" MODIFIED="1686498858490" TEXT="Nein! besser direkt als Pointer durchschieben" VSHIFT="-5">
|
||||
<arrowlink COLOR="#3e3f9b" DESTINATION="ID_666925478" ENDARROW="Default" ENDINCLINATION="426;-58;" ID="Arrow_ID_1306644139" STARTARROW="None" STARTINCLINATION="311;19;"/>
|
||||
<arrowlink COLOR="#3e3f9b" DESTINATION="ID_1078372838" ENDARROW="Default" ENDINCLINATION="426;-58;" ID="Arrow_ID_1700206774" STARTARROW="None" STARTINCLINATION="311;19;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1685987502422" FOLDED="true" ID="ID_1001471344" MODIFIED="1686581362539" TEXT="Segmentation-Spec erweitern">
|
||||
|
|
@ -76539,7 +76540,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802605380" ID="ID_1316148159" MODIFIED="1685802617500" TEXT="aber schon mal die benötigten Daten analysieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802625130" ID="ID_148642807" MODIFIED="1685802642496" TEXT="Kernproblem: welche Daten für den Einzelfall">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802625130" ID="ID_148642807" MODIFIED="1688601316599" TEXT="Kernproblem: welche Daten für den Einzelfall">
|
||||
<arrowlink COLOR="#fe3665" DESTINATION="ID_1442656492" ENDARROW="Default" ENDINCLINATION="-1161;156;" ID="Arrow_ID_1073485120" STARTARROW="None" STARTINCLINATION="-478;30;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802655901" ID="ID_554344836" MODIFIED="1685802665981" TEXT="nomineller Zeitpunkt">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
@ -77462,6 +77464,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685987007275" ID="ID_953619048" MODIFIED="1685987465547" TEXT="daher per Pointer auf den Calc-Stream verweisen">
|
||||
<arrowlink COLOR="#4b3ea5" DESTINATION="ID_87044302" ENDARROW="Default" ENDINCLINATION="248;-35;" ID="Arrow_ID_594271482" STARTARROW="None" STARTINCLINATION="669;36;"/>
|
||||
<arrowlink COLOR="#4b3ea5" DESTINATION="ID_1078372838" ENDARROW="Default" ENDINCLINATION="416;-39;" ID="Arrow_ID_209843242" STARTARROW="None" STARTINCLINATION="669;36;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1687217341462" ID="ID_877655155" MODIFIED="1687218491894" TEXT="Problem: API-Design und Builder-Operationen">
|
||||
|
|
@ -77644,7 +77647,38 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
<node CREATED="1681086385917" ID="ID_1193213661" MODIFIED="1681086416077" TEXT="leichtgewichtig, kopierbar, stateful, Scheduler-impl-owned"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681425144493" ID="ID_1404753000" MODIFIED="1681425214239" TEXT="Support für engine::Activity">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802625130" ID="ID_1442656492" MODIFIED="1688601316599" TEXT="Job-Daten-Record">
|
||||
<linktarget COLOR="#fe3665" DESTINATION="ID_1442656492" ENDARROW="Default" ENDINCLINATION="-1161;156;" ID="Arrow_ID_1073485120" SOURCE="ID_148642807" STARTARROW="None" STARTINCLINATION="-478;30;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802711785" ID="ID_97201971" MODIFIED="1688601092211" TEXT="JobFunctor">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802655901" ID="ID_570451449" MODIFIED="1685802665981" TEXT="nomineller Zeitpunkt">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802759365" ID="ID_1501130954" MODIFIED="1685802764857" TEXT="InstanceID">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685986803653" ID="ID_1078372838" MODIFIED="1688601155076" TEXT="Functor-Argumente">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head></head>
|
||||
<body>
|
||||
<p>
|
||||
werden vom jeweiligen Funktor flexibel interpretiert (ggfs auch als
|
||||
void*); der wichtigste Funktor ist der für das eigentliche Rendern ��
|
||||
dieser speichert hier die ExitNode und das DataSink
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<linktarget COLOR="#3e3f9b" DESTINATION="ID_1078372838" ENDARROW="Default" ENDINCLINATION="426;-58;" ID="Arrow_ID_1700206774" SOURCE="ID_491497133" STARTARROW="None" STARTINCLINATION="311;19;"/>
|
||||
<linktarget COLOR="#4b3ea5" DESTINATION="ID_1078372838" ENDARROW="Default" ENDINCLINATION="416;-39;" ID="Arrow_ID_209843242" SOURCE="ID_953619048" STARTARROW="None" STARTINCLINATION="669;36;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1688600921177" ID="ID_1002134574" MODIFIED="1688600925684" TEXT="size_t strcArg"/>
|
||||
<node CREATED="1688600926480" ID="ID_57908906" MODIFIED="1688600930635" TEXT="size_t sinkArg"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681425144493" ID="ID_1404753000" MODIFIED="1688601418353" TEXT="einbetten in engine::Activity">
|
||||
<linktarget COLOR="#dd7f91" DESTINATION="ID_1404753000" ENDARROW="Default" ENDINCLINATION="1062;104;" ID="Arrow_ID_153253143" SOURCE="ID_1605268671" STARTARROW="None" STARTINCLINATION="779;-154;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -77835,6 +77869,31 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1688644877010" ID="ID_112915141" MODIFIED="1688644891972" TEXT="feed">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
supply additional payload data for a preceding Activity
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688603910393" ID="ID_1991714442" MODIFIED="1688644872705" TEXT="post">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
post a message providing a chain of further time-bound Activities
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
<node CREATED="1684980900588" ID="ID_1729066993" MODIFIED="1684980976835" TEXT="tick">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
|
@ -77853,7 +77912,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node CREATED="1684980982361" ID="ID_1863198468" MODIFIED="1684980987321" TEXT="Themen">
|
||||
<node CREATED="1684980991406" ID="ID_1812192430" MODIFIED="1684981025601" TEXT="Timings nachführen">
|
||||
<arrowlink COLOR="#705783" DESTINATION="ID_1565158605" ENDARROW="Default" ENDINCLINATION="223;-15;" ID="Arrow_ID_516157232" STARTARROW="None" STARTINCLINATION="338;47;"/>
|
||||
<arrowlink COLOR="#705783" DESTINATION="ID_1565158605" ENDARROW="Default" ENDINCLINATION="223;-15;" ID="Arrow_ID_516157232" STARTARROW="None" STARTINCLINATION="372;51;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -77878,6 +77937,112 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688599645418" ID="ID_290814679" MODIFIED="1688599769276" TEXT="Repräsentation Argument-Daten">
|
||||
<linktarget COLOR="#fd476e" DESTINATION="ID_290814679" ENDARROW="Default" ENDINCLINATION="-1095;85;" ID="Arrow_ID_1644257444" SOURCE="ID_1520469413" STARTARROW="None" STARTINCLINATION="676;32;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1688646827878" ID="ID_683405596" MODIFIED="1688648419999" TEXT="Activity soll ein POD-artiger Daten-Record sein">
|
||||
<arrowlink COLOR="#534e96" DESTINATION="ID_464419365" ENDARROW="Default" ENDINCLINATION="-729;124;" ID="Arrow_ID_1095556572" STARTARROW="None" STARTINCLINATION="-1826;106;"/>
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1688648423563" ID="ID_1822457812" MODIFIED="1688648431846" TEXT="tatsächlich ist es etwas komplexer">
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1688648433016" ID="ID_12211665" MODIFIED="1688648464015" TEXT="Activity muß trivial destruierbar sein">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688648487864" ID="ID_429483541" MODIFIED="1688648500159" TEXT="außerdem sollte es standard-Layout sein">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c6c8db" COLOR="#435e98" CREATED="1688648552904" HGAP="18" ID="ID_1142231252" MODIFIED="1688648658935" STYLE="bubble" TEXT="⟹ »POD mit Konstruktor«" VSHIFT="12">
|
||||
<edge COLOR="#5b26b8"/>
|
||||
<font NAME="SansSerif" SIZE="16"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1688599871372" ID="ID_280220141" MODIFIED="1688599874528" TEXT="benötigt">
|
||||
<node CREATED="1688599875731" ID="ID_1691021100" MODIFIED="1688599878178" TEXT="stets">
|
||||
<node CREATED="1688599879355" ID="ID_937537110" MODIFIED="1688599893566" TEXT="next-Pointer"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1688599920366" ID="ID_519528587" MODIFIED="1688602346298">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<font face="Monospaced">startTime </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced">deadline</font>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1688602901632" HGAP="42" ID="ID_1108696445" MODIFIED="1688602935788" TEXT="könnte man kontextuell bereitstellen" VSHIFT="-5">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1688599961752" ID="ID_1476155017" MODIFIED="1688599964244" TEXT="invoke">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688599981240" ID="ID_1605268671" MODIFIED="1688601467122" TEXT="Job-Daten">
|
||||
<arrowlink COLOR="#dd7f91" DESTINATION="ID_1404753000" ENDARROW="Default" ENDINCLINATION="1062;104;" ID="Arrow_ID_153253143" STARTARROW="None" STARTINCLINATION="779;-154;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688601470768" HGAP="39" ID="ID_973557978" MODIFIED="1688602978000" TEXT="leider ziemlich viel Daten" VSHIFT="17">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1688601569851" ID="ID_567583834" MODIFIED="1688601591196" TEXT="Ptr + Time + LUID + 2*size_t"/>
|
||||
<node CREATED="1688601604198" ID="ID_1026682492" MODIFIED="1688601662698" TEXT="⟹ 3 »slots« + 3*64bit"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688602957054" HGAP="59" ID="ID_1822229878" MODIFIED="1688602975417" TEXT="in mehrere Pakete aufteilen">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1688601865955" ID="ID_1274992770" MODIFIED="1688601871022" TEXT="timestart|stop">
|
||||
<node CREATED="1688601873323" ID="ID_1142615782" MODIFIED="1688601877397" TEXT="Time"/>
|
||||
<node CREATED="1688602420417" ID="ID_186416345" MODIFIED="1688602445794" TEXT="observable-ID"/>
|
||||
</node>
|
||||
<node CREATED="1688601937242" ID="ID_1645818816" MODIFIED="1688601939806" TEXT="notify">
|
||||
<node CREATED="1688601944873" ID="ID_1656108981" MODIFIED="1688601966553" TEXT="ptr ⟶ target-Activity"/>
|
||||
</node>
|
||||
<node CREATED="1688601984418" ID="ID_1068955148" MODIFIED="1688601986335" TEXT="gate">
|
||||
<node CREATED="1688601991523" ID="ID_1519691813" MODIFIED="1688602001213" TEXT="deadline"/>
|
||||
<node CREATED="1688602002513" ID="ID_1687808112" MODIFIED="1688602012044" TEXT="counter"/>
|
||||
</node>
|
||||
<node CREATED="1688603899403" ID="ID_1940894045" MODIFIED="1688603926576" TEXT="post">
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688604014499" ID="ID_1612409519" MODIFIED="1688604027981" TEXT="unklar ob notwendig">
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688604029521" ID="ID_1078704694" MODIFIED="1688604053304" TEXT="könnte kontextuelle Info transportieren">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1688602042892" ID="ID_603067058" MODIFIED="1688602044951" TEXT="tick"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688642849216" ID="ID_1226380123" MODIFIED="1688642857095" TEXT="Entscheidung">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1688642858447" ID="ID_186671270" MODIFIED="1688642868113" TEXT="kleine Datenblöcke bevorzugt">
|
||||
<node CREATED="1688643081577" ID="ID_1868543513" MODIFIED="1688643112138" TEXT="der Hebel für unbenutzte Felder ist groß">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1688643122564" ID="ID_1945639655" MODIFIED="1688643136109" TEXT="das wiegt eine zusätzliche Activity schnell auf">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1688642872398" ID="ID_1043417945" MODIFIED="1688642947743" TEXT="Job-Argumente in eine Kette von Datenblöcken legen"/>
|
||||
<node CREATED="1688642986094" ID="ID_1753772146" MODIFIED="1688643010373" TEXT="Zeitfenster-Angaben nach Möglichkeit kontextuell bereitstellen"/>
|
||||
<node CREATED="1688643151608" ID="ID_1226022994" MODIFIED="1688643202164">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<u>Richtwert</u>: <font color="#016258">2 * 64bit + next-Ptr</font>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -78295,7 +78460,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1684980732965" ID="ID_1914429002" MODIFIED="1684980742528" TEXT="Thema: Timing-Updates">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684980744406" ID="ID_1565158605" LINK="https://issues.lumiera.org/ticket/1302" MODIFIED="1684981025601" TEXT="#1302 maintain consistent job timings">
|
||||
<linktarget COLOR="#705783" DESTINATION="ID_1565158605" ENDARROW="Default" ENDINCLINATION="223;-15;" ID="Arrow_ID_516157232" SOURCE="ID_1812192430" STARTARROW="None" STARTINCLINATION="338;47;"/>
|
||||
<linktarget COLOR="#705783" DESTINATION="ID_1565158605" ENDARROW="Default" ENDINCLINATION="223;-15;" ID="Arrow_ID_516157232" SOURCE="ID_1812192430" STARTARROW="None" STARTINCLINATION="372;51;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -78701,7 +78866,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1688509701330" ID="ID_1512622255" MODIFIED="1688509710564" TEXT="ja: ganz banal">
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
<node CREATED="1688509711550" ID="ID_868274901" MODIFIED="1688509754176" TEXT="mit eine IterAdapter">
|
||||
<node CREATED="1688509711550" ID="ID_868274901" MODIFIED="1688509754176" TEXT="mit einem IterAdapter">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
|
|
@ -78767,6 +78932,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688560442660" ID="ID_143148462" MODIFIED="1688560448084" TEXT="Activity placement-New">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1688599586802" ID="ID_13764637" MODIFIED="1688599611052" TEXT="wie übergibt man hier flexible Argumente (abhängig vom Verb)?">
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1688599613103" ID="ID_1520469413" MODIFIED="1688599769276" TEXT="was muß überhaupt in jeder Activity gespeichert werden?">
|
||||
<arrowlink COLOR="#fd476e" DESTINATION="ID_290814679" ENDARROW="Default" ENDINCLINATION="-1095;85;" ID="Arrow_ID_1644257444" STARTARROW="None" STARTINCLINATION="676;32;"/>
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688511891911" ID="ID_604517829" MODIFIED="1688511905225" TEXT="späteste derzeit unterstützte Deadline">
|
||||
|
|
@ -84010,6 +84182,121 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
<node CREATED="1482365415326" HGAP="71" ID="ID_886002365" MODIFIED="1557498707240" TEXT="Standard C++" VSHIFT="-25">
|
||||
<node CREATED="1688646174430" ID="ID_1246578113" MODIFIED="1688646186652" TEXT="base language knowledge">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1688646188508" ID="ID_464419365" MODIFIED="1688648419999" TEXT="POD and unions">
|
||||
<linktarget COLOR="#534e96" DESTINATION="ID_464419365" ENDARROW="Default" ENDINCLINATION="-729;124;" ID="Arrow_ID_1095556572" SOURCE="ID_683405596" STARTARROW="None" STARTINCLINATION="-1826;106;"/>
|
||||
<node CREATED="1688646230670" ID="ID_1200807820" MODIFIED="1688646259534" TEXT="POD ⟺ „no compiler magic happens“">
|
||||
<node CREATED="1688646260810" ID="ID_1731163706" LINK="https://stackoverflow.com/a/146589" MODIFIED="1688646437208" TEXT="basic built-in types and aggretates thereof"/>
|
||||
<node CREATED="1688646300048" ID="ID_1520004791" LINK="https://stackoverflow.com/a/7189821" MODIFIED="1688646422060" TEXT="in C strikter als in C++ / private Funktionen und ptr-to-member sind erlaubt"/>
|
||||
</node>
|
||||
<node CREATED="1688646442954" ID="ID_1586820596" MODIFIED="1688646451700" TEXT="unions can be POD or non-POD">
|
||||
<node CREATED="1688646471639" ID="ID_904815410" MODIFIED="1688646481455" TEXT="rekursive Definition">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1688646482526" ID="ID_269065631" MODIFIED="1688646518786" TEXT="nichttriviale Logik ⟹ kann kein POD mehr sein"/>
|
||||
<node CREATED="1688646519679" ID="ID_30562198" MODIFIED="1688646596687">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
wenn ein Member eine nichttriviale Funktion hat,
|
||||
</p>
|
||||
<p>
|
||||
dann muß die gleiche Funktion für die unition explizit geschrieben werden
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
ctor (auch default)
|
||||
</li>
|
||||
<li>
|
||||
copy-ctor
|
||||
</li>
|
||||
<li>
|
||||
assignment
|
||||
</li>
|
||||
<li>
|
||||
dtor
|
||||
</li>
|
||||
<li>
|
||||
vtable
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1688646774405" ID="ID_1671950490" MODIFIED="1688646809035">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
im Zweifelsfall: <font face="Monospaced" color="#4a3ecd">std::is_pod<TY>()</font> fragen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
<node CREATED="1688647296784" ID="ID_710545394" MODIFIED="1688647352432">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<u><font color="#b80225">Achtung</font></u>: der Begriff »POD« is <font face="Monospaced" color="#9c5709">@deprecated</font>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<node CREATED="1688647397946" ID="ID_1763884111" LINK="https://en.cppreference.com/w/cpp/named_req/StandardLayoutType" MODIFIED="1688647548910" TEXT="std::is_standard_layout">
|
||||
<node CREATED="1688648333494" ID="ID_1238201043" MODIFIED="1688648339305" TEXT="rekursiv definiert">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1688648375312" ID="ID_378721631" MODIFIED="1688648389446" TEXT="Objekt besteht aus nichts außer den Datenelementen">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node CREATED="1688648359798" ID="ID_386098441" MODIFIED="1688648362570" TEXT="keine VTable"/>
|
||||
<node CREATED="1688648340428" ID="ID_1831676232" MODIFIED="1688648358845" TEXT="kein Padding findet statt"/>
|
||||
<node CREATED="1688648363841" ID="ID_864980607" MODIFIED="1688648369812" TEXT="offsetof() kann verwendet werden"/>
|
||||
</node>
|
||||
<node CREATED="1688647404527" ID="ID_1112859987" LINK="https://en.cppreference.com/w/cpp/named_req/TrivialType" MODIFIED="1688647454010" TEXT="std::is_trivial">
|
||||
<node CREATED="1688648206419" ID="ID_1701153211" MODIFIED="1688648241387">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
„trivial“ ⟹ der Compiler muß <i>nix Spezielles</i>  machen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1688647905286" ID="ID_740091299" MODIFIED="1688647912297" TEXT="trivially_copyable">
|
||||
<node CREATED="1688647922148" ID="ID_1365927097" MODIFIED="1688647939032" TEXT="copy, move, assignment und dtor sind trivial"/>
|
||||
<node CREATED="1688648190416" ID="ID_1986330338" MODIFIED="1688648294481" TEXT="das heißt: kann stattdessen std::memove verwenden">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node CREATED="1688648300441" ID="ID_924956250" MODIFIED="1688648325010" TEXT="trivial dtor: es passiert gar nichts (außer de-Allocation)"/>
|
||||
</node>
|
||||
<node CREATED="1688647912797" ID="ID_1339407010" MODIFIED="1688647918511" TEXT="hat einen trivial default-ctor">
|
||||
<node CREATED="1688648248344" ID="ID_1793228843" MODIFIED="1688648284218" TEXT="es findet keinerlei explizitie Initialisierung statt">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node CREATED="1688648266062" ID="ID_1386655083" MODIFIED="1688648279595" TEXT="Vorsicht: kein Member darf einen default-Initialiser haben">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1482365430484" ID="ID_1414724077" MODIFIED="1557498707240" TEXT="chrono">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1482365434203" ID="ID_1026694670" MODIFIED="1557498707240" TEXT="lernen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue