Ich bin für ein Lock-Free-Design suche diese Voraussetzungen entsprechen:die Suche nach einer Lock-freien RT-Safe Single-Leser single-writer Struktur
- einen einziger Schriftsteller schreibt in eine Struktur und ein einzelnen Leser lesen aus dieser Struktur (diese Struktur ist bereits vorhanden und ist für die gleichzeitige Lese-/Schreib-safe)
- aber irgendwann muss die Struktur den Schriftsteller, die dann initialisiert, Schalter geändert werden und schreibt in eine neue Struktur (des gleichen Typs, aber mit neuem Inhalt)
- und das nächste Mal liest der Leser, es Schalter zu dieser neuen Struktur (wenn der Schreiber zu einer neuen verriegelungsfreien Struktur multipliziert wechselt der Leser ab diese Strukturen, ihre Daten ignorierend).
- Die Strukturen müssen wiederverwendet werden, d. H. Während der Schreib-/Lese-/Schalteroperation ist keine Heap-Speicherzuweisung/frei zulässig, für RT-Zwecke.
Ich habe derzeit einen Ringpuffer implementiert, der mehrere Instanzen dieser Strukturen enthält; aber diese Implementierung leidet unter der Tatsache, dass, wenn der Schreiber alle im Ringpuffer vorhandenen Strukturen verwendet hat, es keinen Platz mehr gibt, um von der Struktur zu wechseln ... Der Rest des Ringpuffers enthält jedoch einige Daten, die nicht gelesen werden müssen vom Leser aber kann nicht vom Schreiber wiederverwendet werden. Als Konsequenz passt der Ringpuffer nicht zu diesem Zweck.
Irgendwelche Idee (Name oder Pseudo-Implementierung) eines Lock-free-Design? Vielen Dank für dieses Problem.
Zu viel Betonung macht keinen Schwerpunkt. – kennytm
@KennyTM: Sie haben Recht. Bearbeitet. – moala
Gute Frage. Dies ist ein häufiges Problem in Echtzeitsystemen. Ich bin neugierig, ob es eine Standardlösung dafür gibt. – thebretness