LabVIEWForum.de
Arbeiten mit Semaphoren - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Arbeiten mit Semaphoren (/Thread-Arbeiten-mit-Semaphoren)



Arbeiten mit Semaphoren - Herby07 - 26.09.2015 09:40

Hallo zusammen,

ich habe ein VI mit drei Tasks, die auf die gleiche Ressource zugreifen.
Den problemlosen Zugriff habe ich mit einem Semaphor geregelt.
VI läuft auch.
Aber: kann man bestimmen (ermitteln), welcher Task bei Start des VIs (Task starten auch gleichzeitigt) zuerst auf die Ressource zugreift und wie die Reihenfolge der Zuteilung aussieht ?

Vielen Dank,
Herby


RE: Arbeiten mit Semaphoren - Trinitatis - 26.09.2015 20:59

(26.09.2015 09:40 )Herby07 schrieb:  Aber: kann man bestimmen (ermitteln), welcher Task bei Start des VIs (Task starten auch gleichzeitigt) zuerst auf die Ressource zugreift und wie die Reihenfolge der Zuteilung aussieht ?

Hallo Herby,

die Funktion Anfordern der Semaphorreferenz gibt dir einen boolschen Wert zurück, ob diese neu erstellt wurde. Das wird in deinen Tasks nur bei einer der Fall sein, nämlich bei der, die zuerst anfordert.
Die weitere Reihenfolge müsstest du (beispielsweise über Melder oder Queues) selbst definieren.


Gruß, Marko


RE: Arbeiten mit Semaphoren - Herby07 - 28.09.2015 13:53

Hallo Marko,
vielen Dank für Deine Antwort, aber so ganz ist mir das nicht klar:

Mit ´Semaphorreferenz anfordern´ erstelle ich ein neues Semaphor.

Nun habe ich im VI drei getrennte While-Schleifen, die gleichzeitig starten und die alle das Semaphor belegen (wollen).

Und hierzu habe ich die Frage: lässt sich ermitteln, welche der drei While-Schleifen zuerst den Zugriff bekommt oder läuft das ´rein´ zufällig ab, weil man nicht weiß, wie LabVIEW diese drei Schleifen behandelt ?

Vielen Dank,
Herby


RE: Arbeiten mit Semaphoren - Trinitatis - 28.09.2015 14:03

Hallo Herby,

da hatte ich dich missverstanden. Ich dachte du sprichst von der Anforderung der Semaphore-Referenz, die ja namentlich und auch VI-übergreifend stattfinden kann.
Auch beim Belegen des Semaphores gilt: Wer zuerst kommt mahlt zuerst.
Du kannst dir natürlich deine 3 Schleifen mit IDs 1-3 versehen und diese je nach Belegung in einunddasselbe Array schreiben, dann weißt du, wer vor wem belegen durfte. Steuern könntest du das ganze ggf. über Queues oder Melder, aber dann stünde die Frage nach dem Sinn der Semaphore im Raum.

Falls dir das alles zu nebulös ist, erläutere doch mal, wozu du diese Info brauchst, bzw. was du vorhast.



Gruß, Marko