2010-10-22 14 views

Antwort

6

Nachrichtenwarteschlangen sind eine Möglichkeit, Ihr Problem zu lösen.

Wenn Sie Ihre Statusmaschine mit externen Ereignissen von anderen Threads versorgen möchten, können sie diese Ereignisse in eine Nachrichtenwarteschlange schreiben, die von Ihrer Statusmaschine gelesen wird.

Wenn Sie möchten, dass andere Threads auf Aktionen von Ihrer Statusmaschine ausgelöst werden, kann sie in verschiedene Nachrichtenwarteschlangen schreiben, die jeweils einem Thread zugeordnet sind, der von seinem MQ liest.

Ein Nachteil ist, dass Ereignisse in chronologischer Reihenfolge sortiert werden. Wenn Ihre Zustandsmaschine nicht in der Stimmung ist, das gerade gelesene Ereignis aus der Warteschlange zu verarbeiten, müssen Sie entscheiden, was mit diesem Ereignis geschehen soll: es zerstören, in die Warteschlange zurückstellen, für die zukünftige Verwendung merken ...

+0

Ich habe mit Interesse Ihren letzten Absatz über die Reihenfolge der Ereignisse gelesen. Kannst du mich auf Beispiele, Quellen oder Artikel über Manipulation der Ereigniswarteschlange in State Machines verweisen? – BiAiB

5

Vielleicht ist das Quantum Framework das was Sie suchen? Weitere Informationen finden Sie unter http://state-machine.com/. Es gibt Ports für viele Mikrocontroller sowie für Linux und Windows.

+0

Hallo quietschende Eichhörnchen. Ja, ich habe diese Seite und ihr Buch auch entdeckt. Interessant! Danke. JCLL – JCLL

+0

Ich habe QF in einer kommerziellen Umgebung sowohl mit als auch ohne Threads verwendet. Anfangs war es peinlich, aber jetzt kann ich mir nicht mehr vorstellen, sicherheitsrelevanten Code anders zu schreiben. Im Gegensatz zu Ad-hoc-Implementierungen ist QPC so konzipiert, dass es gut skaliert werden kann, ohne zu einer großen Unordnung zu werden. –

Verwandte Themen