Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uml 状态机运行到完成范例_Uml - Fatal编程技术网

Uml 状态机运行到完成范例

Uml 状态机运行到完成范例,uml,Uml,我不理解关于状态机的从运行到完成的范例(14.2.3.9.1 UML2.5规范)。他曾说过: “运行到完成”是指,在上下文分类器对象或状态机执行没有异常或异步破坏的情况下,只有在前一事件的处理完成且达到稳定状态配置后,才会调度挂起事件事件。也就是说,当状态机执行忙于处理前一个事件时,事件将永远不会被调度 另一方面: “执行说明。“运行到完成”通常被错误地解释为意味着执行状态机不能被中断,这当然会在一些时间敏感的系统中导致优先级反转问题。然而,事实并非如此;在给定的实现中,执行状态机步骤的线程可以

我不理解关于状态机的从运行到完成的范例(14.2.3.9.1 UML2.5规范)。他曾说过:

“运行到完成”是指,在上下文分类器对象或状态机执行没有异常或异步破坏的情况下,只有在前一事件的处理完成且达到稳定状态配置后,才会调度挂起事件事件。也就是说,当状态机执行忙于处理前一个事件时,事件将永远不会被调度

另一方面:

“执行说明。“运行到完成”通常被错误地解释为意味着执行状态机不能被中断,这当然会在一些时间敏感的系统中导致优先级反转问题。然而,事实并非如此;在给定的实现中,执行状态机步骤的线程可以挂起,允许更高优先级的线程运行,并且,一旦底层线程调度程序再次为其分配处理器时间,它就可以安全地恢复其执行并完成其事件处理。”

那么,是否可能中断状态机?一个新的高优先级事件可以中断当前事件调度

谢谢


Mauro

实现说明指更高级别的硬件或软件实现。完成仅对状态机上下文有效。此机器可以在允许中断状态机处理的全局上下文中运行。但状态机不会注意到此中断,并且从其自身的v查看它仍在继续处理。因此,如前所述,唯一的问题是状态机personal watch不会连续运行,而是会有不规则的跳跃。在正常的业务流程中,这一点可以忽略,但在处理实时处理时,您可能会遇到麻烦。

实施说明涉及硬件或软件imple在更高级别上执行。完成仅对状态机的上下文有效。此机器可以在全局上下文中运行,该全局上下文允许中断状态机的处理。但状态机不会注意到此中断,并且从其自身的角度来看,它仍在继续处理。因此,如前所述,唯一的问题是状态机personal watch不会连续运行,但会有不规则的跳跃。在正常的业务流程中,这一点可以忽略,但在处理实时处理时,您可能会遇到麻烦。

“当状态机执行忙于处理前一个事件时,将永远不会调度事件“表示状态机在其运行到完成步骤完成之前不会从其队列中选择下一个事件。当运行到完成步骤正在运行时,这不会阻止状态机本身或其他状态机向其队列发送更多事件。 此外,在同步操作调用的情况下,运行到完成步骤可能会挂起;运行到完成步骤稍后将在操作调用完成时恢复(可能返回值)。

当StateMachine执行忙于处理前一个事件时,将永远不会调度事件发生意味着状态机在其运行到完成步骤完成之前不会从其队列中选择下一个事件。当运行到完成步骤正在运行时,这不会阻止状态机本身或其他状态机向其队列发送更多事件。 此外,在同步操作调用的情况下,运行到完成步骤可能会挂起;运行到完成步骤将在操作调用完成后恢复(可能返回值)