Ich erwäge eine Multithreading-Architektur für eine Verarbeitungspipeline. Mein Hauptverarbeitungsmodul hat eine Eingabewarteschlange, aus der es Datenpakete empfängt. Es führt dann Transformationen an diesen Paketen durch (Entschlüsselung usw.) und stellt sie in eine Ausgabewarteschlange.
Das Threading setzt dort an, wo viele Eingabepakete unabhängig voneinander umgewandelt werden können.
Die Pointe ist jedoch, dass die Ausgabewarteschlange dieselbe Reihenfolge haben muss wie die Eingabewarteschlange (d. h., das erste, das aus der Eingabewarteschlange gezogen wird, muss auch das erste sein, das in die Ausgabewarteschlange geschoben wird, unabhängig davon, ob seine Umwandlungen zuerst abgeschlossen wurden).
Natürlich wird es irgendeine Art von Synchronisation in der Ausgabewarteschlange geben. Meine Frage lautet also: Wie kann ich am besten sicherstellen, dass diese Reihenfolge beibehalten wird?