[ TAG 103 ][02.08.2021] -Erfolgreich -IAP-20210601-20210722-1145 -SYNC_AV(ALOG_STATE, VLOG_STATE)

 Ich beginne die Worksession um [02.08.2021][2100]. Bei meiner ersten Zeitmessung [ZEITMESSUNG-20210802-2301.txt] heute habe ich durchgerechnet, wie groß der Datenverlust ohne eine Synchronisierung von Prozessen wäre.

  • IAP-20210601-20210722-1145
    • ZEITMESSUNG-20210802-2301.txt
      • RECHNUNG-2, RECHNUNG-5, RECHNUNG-6
        • Von der Ausführung der MAIN bis zum [STATE = 1] haben wir folgende Verluste
          • Zeit: 84.616.900 ns
          • Frames: 3766
          • [32Bit, 44.500Hz, Stereo]: 30.128 Byte, etwa 30 kB
SYNC_AV(ALOG_STATE, VLOG_STATE)
Es ist ganz wichtig, der SYNC_AV die Referenz von der SharedMemory C-Variable zu übergeben und auf keinen Fall den [ .value ]. Das ist schon mal ganz ganz wichtig.

Ich habe glücklicherweise den Fehler als erstes gemacht. Es führte dazu, der Status von beiden WHILE-Schleifen detected wurde. Jedoch wurde die SYNC_AV()-Funktion in den Prozessen zu unterschiedlichen Zeitpunkten verlassen.

Ich vermute, wenn wir die Referenz über Attribute übergeben, so verändern wir nicht die Speicherzelle. Stattdessen nutzen wir einen Pointer. Das Programm benutzt die C-Variablen wahrscheinlich im L3-Cach.

Sobald wir über das Attribut den Wert bzw. Value der C-Variable übergeben, werden intern Routinen ausgeführt, die aus der C-Variable ein Python Zahlen Objekt erstellen. Das passiert nicht im selben CPU-Cycle. Beide Prozesse weisen in der Zeile nach der SYNC_AV()-Funktion unterschiedliche Timestamps.

Aus diesem Grund übergibt man als Attribut nur eine Referenz von RawValue().

In der Zeitmessung [ZEITMESSUNG-20210803-0042.txt] habe ich erfolgreich die SYNC_AV()-Funktion umgesetzt. Die Zeitmessungen zeigen, dass die WHILE-Schleifen in SYNC_AV() zu unterschiedlichen Zeitpunkten gestartet werden. In der selben NanoSekunde detecten die WHILE-Schleifen in der SYNC_AV() den [ STATE = 1 ] und in der selben NanoSekunde wird die WHILE-Schleife und die SYNC_AV() abgearbeitet und die nächsten Zeilen in den ausgeführten Prozess-Funktionen werden ausgeführt.
  • Quellen [ IAP-20210601-20210722-1145 ]:
    • Ausgabe [ 2021-08-03 ][ 00:41:26 ]
    • ZEITMESSUNG-20210803-0042.txt - [ 2021-08-03 ][ 00:44:56 ]
    • main.py - [ 2021-08-03 ][ 00:43:21 ]
    • PROCESS_VLOG_20210726_0110.py - [ 2021-08-03 ][ 00:43:40 ]
    • PROCESS_ALOG_20210726_0110.py - [ 2021-08-03 ][ 00:44:08 ]
Ich denke der nächste Schritt besteht darin, einen ALOG aufzuzeichnen und den Status in das SharedMemory zu schreiben. Der VLOG soll erst einmal nur die Statusmeldungen auslesen und auf den Bildschirm ausgeben.

Kommentare

Beliebte Posts aus diesem Blog

[ TAG 38 ][29.05.2021] - Erfolgreich - Freelancer-Portale

[ TAG 747 ][07.04.2023] -Erfolgreich -BNKTRS -Google Code -Objekt und Methodenliste

[ TAG 52 ][12.06.2021] - Erfolgreich - IAP-20210601-20210609-2325