先决条件–流程同步
叉 :
fork指令是流程执行中的that指令,可在程序中产生两个并发执行。并发执行之一从标记为的语句开始,其他执行是在fork指令之后的语句处继续执行。货叉系统的呼叫分配具有一个参数,即标签(L)。
加入 :
join指令是流程执行中的that指令,它提供了将两个并发计算重组为单个计算的介质。连接指令具有一个参数整数计数,该整数指定要连接的计算数量。它将整数减一。如果减量后的整数值不为零,则该过程终止,否则该过程将继续执行下一条语句。
示例1:
为以下fork / join程序构造优先级图。
S1;
count1: = 2;
fork L1;
S2;
S4;
count2: = 2;
fork L2;
S5;
Go to L3;
L1: S3;
L2: join count1;
S6;
L3: join count2;
S7;
解决方案 :
示例2:
为以下优先级图编写一个fork / join程序。
解决方案 :
在S1之后,需要使用fork语句来创建子代。
在S4之后,需要使用fork语句创建一个子代。
所有进程都需要在S7之前加入。
S1;
count: = 3;
fork L1;
S2;
S4;
fork L2;
S5;
Go to L3;
L2: S6;
GOTO L3;
L1: S3;
L3: join count;
S7;