📜  并发的分叉和联接构造

📅  最后修改于: 2021-08-25 10:19:33             🧑  作者: Mango

先决条件–流程同步
叉 :
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;