Ich möchte die Warteschleife für Ausgang sowie Eingang für Netzwerkdaten beschleunigen. Bisher gesichert durch Mutex Objekte, wobei es sein kann, dass der Besitz wieder ergriffen wird, bevor die Warteschlange zum Zug kommt.
Da der Stapel jeweils ein Array darstellt, könnten beide Threads ungebremst darauf zugreifen, solange meines Wissen nicht beide gleichzeitig schreiben möchten.
Code: Alles auswählen
If \Queue(x)\Active
.. hau raus...
\Queue(x)\Active = #False
EndIf
Der Auftraggeber handhabt neue Elemente auf ähnliche Art:
Code: Alles auswählen
For i=0 To 512
If \Queue(i)\Active = #False
\Queue(i)\Data = *Data
...hau rein..
\Queue(i)\Active = #True
Break
EndIf
Next
Die kritische stelle wäre "\Queue(i)\Active" da das der einzige Wert ist, welcher von beiden beschrieben/gelesen wird. Glaube nicht das es zur Kollision führen könnte, da beide erst lesen "If \Queue(i)\Active" und mit dem jeweils umgekehrten Zustand arbeiten.