Ankündigung

Einklappen
Keine Ankündigung bisher.

readflash(), writeflash(), locks?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Handbuch] readflash(), writeflash(), locks?

    readflash() und writeflash() sind asynchrone calls.
    Frage:
    1.Muß ich selbst dafür sorgen ( mit Locks), das es bei "gleichzeitigen" calls von writeflash() nicht zu memory corruption kommt ?
    2.Gibt readflash() immer einen konsistenten Wert zurück, auch wenn "gleichzeitig" ein call writeflash() vorliegt?

    Vielleicht könnte man das im Handbuch (Seite 113) etwas präzisieren:
    Welche Queues werden intern für die asyncronen Calls verwendet?

    alexander

    #2
    Zitat von asc570 Beitrag anzeigen
    1.Muß ich selbst dafür sorgen ( mit Locks), das es bei "gleichzeitigen" calls von writeflash() nicht zu memory corruption kommt ?
    Nein, Speicherlecks sind nicht die Gefahr. Allerdings kann das Ergebnis in solchen Fällen vom Code bzw. dessen Verarbeitung abhängen, z.B. wenn das readflash zu erst ausgeführt wird und dann das writeflash ein anderes Ergebnis als umgekehrt.
    2.Gibt readflash() immer einen konsistenten Wert zurück, auch wenn "gleichzeitig" ein call writeflash() vorliegt?
    Ja.
    Vielleicht könnte man das im Handbuch (Seite 113) etwas präzisieren:
    Welche Queues werden intern für die asyncronen Calls verwendet?
    Was meinst Du da? Es sind ebene systeminterne Queues, die da genutzt bzw. angelegt werden. Diese werden von eigenen Prozessen abgearbeitet.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Zitat von enertegus Beitrag anzeigen
      Was meinst Du da? Es sind ebene systeminterne Queues, die da genutzt bzw. angelegt werden. Diese werden von eigenen Prozessen abgearbeitet.
      Im Handbuch, Seite 113 steht:
      Bei einigen Funktionsaufrufen (wie etwa das Anlegen einer TCP-Verbindung) kann nicht gewährleistet werden, dass
      diese Ihren Rückgabewert innerhalb einer Verarbeitungsschleife des EibPC aktualisieren. Daher wurden diese Funktionen
      als eigenständige Threads innerhalb der Firmware realisiert.
      Wenn nun genau ein Queue für readflash() und writeflash() exisiert, und dieser jeweils nur ein call aktiv hat (sequentiell arbeitet), dann kann ich davon ausgehen das:
      1.) die Sequenz des calls für write UND read eingehalten wird.
      2.) das keine parallelen threads für diese calls möglich sind.


      Alexander

      Kommentar

      Lädt...
      X