我需要做一个带温度调节模块的液压系统的流程图。但是,温度调节仅在循环的一部分期间被激活。在此部分期间,系统继续执行其他操作。
我想在流程图中表示这一点。我需要一种方法来判断并行算法何时开始以及何时在主流程图中结束。我该怎么做?
答案 0 :(得分:4)
添加两个新的流程图节点/运算符 fork 和 join 。
Fork接收一个控制流,并产生两个输出,类似于常规流程图中的菱形决策节点。与决策节点不同,fork节点将控制权传递给其子节点的两个,这意味着"并行执行从这里开始"。
Join接受两个控制流,并产生一个控制流。它的意思是, "等待两个输入分支上的执行完成,然后将控制传递给输出分支"。这意味着"并行执行在此停止"。
现在你的流程图可以有串行和并行部分;你甚至可以让并行部分生成额外的嵌套并行性。
现在你需要fork和join的图形表示。
我们用实质上的流程图表示真实计算机程序的控制流程图("动作"和#34;决定")。由于" fork"的相似性决定"决定" (一个输入,两个输出)我们选择绘制" fork"作为一个向上的三角形(顶部有一个输入,三角形基点端点有两个输出),"加入"作为一个向下的三角形,在三角形基点端点有两个输入,在向下三角形的顶点有一个输出。
您可以看到automatically generated examples of this for C and COBOL programs。您可能认为它们不包含并行性......但实际上,许多语言的语言语义通常都未指定,允许并行执行(例如,根据标准的C函数参数可以按任意顺序进行评估)。我们将这种不确定性建模为" parallelism"因为净效应是一样的。
建立工业控制软件的人也需要表达这一点。他们 简单地将控制流线从一个流图项分割到另一个流图项。请参阅此document中的顺序功能图。
最通用的控制流程"我知道的符号是Colored Petri Nets。这些不仅可以模拟控制流,还可以模拟数据流,同步和算术,这意味着您可以为具有非常复杂流的系统建模。您可以使用CPN直接为常规流程图建模。 CPN还概括了有限状态机。这对程序员来说意味着,如果你不了解CPN,你应该了解这些 now 。你会发现"流程图" (作为CPN)现在再次用于讨论其部分异步运行的系统。