2016-11-06 3 views
0

Ich habe nicht das Paradigma von Lauf zu Fertigstellung über Zustandsmaschine (14.2.3.9.1 UML 2.5-Spezifikation) zu verstehen. An einem Punkt sagt er:State-Maschine-Run-to-Completion-Paradigma

"Run-to-Completion" bedeutet, dass in Abwesenheit von Ausnahmen oder asynchrone Zerstörung des Kontext-Classifier-Objekts oder der StateMachine-Ausführung ein ausstehendes Ereignis erst nach der Verarbeitung der vorherigen ausgelöst wird Auftreten abgeschlossen ist und ein stabiler Zustand Konfiguration erreicht ist das heißt, ein Ereignis Ereignis wird nie während der State versendet werden Ausführung ist damit beschäftigt die Verarbeitung der vorherige

und in einem anderen:

“. UMSETZUNG HINWEIS Run-to-Completion wird oft irrtümlicherweise so interpretiert, als ob es sich um eine Ausführung handelt StateMachine kann nicht unterbrochen werden, was natürlich [?? Unzustellbarkeitsbericht] würde in einigen zeitkritischen Systemen zu Problemen bei der Prioritätsinversion führen. Dies ist jedoch nicht der Fall. In einer gegebenen Implementierung kann ein Thread, der einen StateMachine-Schritt ausführt, ausgesetzt werden, so dass Threads mit höherer Priorität ausgeführt werden können. Sobald ihm vom zugrunde liegenden Thread-Scheduler wieder Prozessorzeit zugewiesen wurde, kann er seine Ausführung fortsetzen und seine Ereignisverarbeitung abschließen "

So ist, möglich ist oder nicht, die Zustandsmaschine ?? Ein neues Ereignis hoher Priorität unterbrechen können den aktuellen Event Dispatch unterbrechen?

Dank

Mauro

Antwort

4

die Umsetzung Anmerkung an Hard- bezieht sich oder Software-Implementierung auf einer höheren Ebene. Die Vervollständigung gilt nur für den Kontext der Zustandsmaschine. Diese Maschine kann in einem globalen Kontext laufen, der es erlauben kann, die Verarbeitung der Zustandsmaschine zu unterbrechen. Aber die Zustandsmaschine wird diese Unterbrechung nicht bemerken und aus ihrer eigenen Sicht wird die Verarbeitung fortgesetzt. Wie bereits erwähnt, besteht das einzige Problem darin, dass die persönliche Uhr des Zustandsautomaten nicht kontinuierlich läuft, sondern mit unregelmäßigen Sprüngen. In normalen Geschäftsprozessen kann dies vernachlässigt werden, aber wenn Sie mit der Echtzeitverarbeitung zu tun haben, könnten Sie in Schwierigkeiten geraten.

0

"Ein Ereignisvorkommen wird niemals ausgelöst, während die StateMachine-Ausführung gerade die vorherige verarbeitet" bedeutet, dass eine StateMachine das nächste Ereignis erst dann aus seiner Warteschlange auswählt, wenn der Ausführungsschritt abgeschlossen ist. Dies verhindert nicht, dass der Zustandsautomat selbst oder andere Zustandsmaschinen weitere Ereignisse in seine Warteschlange senden, während der Ausführungsschritt ausgeführt wird. Darüber hinaus könnte ein Lauf bis zur Fertigstellung im Falle eines synchronen Betriebsaufrufs unterbrochen werden; Der Ablauf bis zum Abschluss wird später fortgesetzt, wenn der Operationsaufruf abgeschlossen ist (möglicherweise wird ein Wert zurückgegeben).