Page tree

无并发控制
下面的示例规则集包括两个循环。 每个循环使用将文本写入文件操作将多行文本写入文本文件,在每行文字之间有小幅延迟。
如果一个实例正在运行,输出看起来像这样:

                                                  • Starting Loop 1 *****************************
                                                    Loop 1 - Iteration: 1
                                                    Loop 1 - Iteration: 2
                                                    Loop 1 - Iteration: 3
                                                  • End of Loop 1 *******************************
                                              1. Start of Loop 2 ###############################
                                                Loop 2 - iteration: 1
                                                Loop 2 - iteration: 2
                                                Loop 2 - iteration: 3
                                              2. End of Loop 2 #################################
                                                但如果多个实例在快速连续运行,输出看起来会类似这样:
                                                  • Starting Loop 1 *************************
                                                    Loop 1 - Iteration: 1
                                                  • Starting Loop 1 *************************
                                                    Loop 1 - Iteration: 1
                                                  • Starting Loop 1 *************************
                                                    Loop 1 - Iteration: 1
                                                    Loop 1 - Iteration: 2
                                                    Loop 1 - Iteration: 2
                                                    Loop 1 - Iteration: 2
                                                    Loop 1 - Iteration: 3
                                                    Loop 1 - Iteration: 3
                                                    Loop 1 - Iteration: 3
                                                  • End of Loop 1 ***************************
                                                  • End of Loop 1 ***************************
                                                  • End of Loop 1 ***************************
                                              3. Start of Loop 2 ###########################
                                                Loop 2 - iteration: 1
                                              4. Start of Loop 2 ###########################
                                                Loop 2 - iteration: 1
                                              5. Start of Loop 2 ###########################
                                                Loop 2 - iteration: 1
                                                Loop 2 - iteration: 2
                                                Loop 2 - iteration: 2
                                                Loop 2 - iteration: 2
                                                Loop 2 - iteration: 3
                                                Loop 2 - iteration: 3
                                                Loop 2 - iteration: 3
                                              6. End of Loop 2 #############################
                                              7. End of Loop 2 #############################
                                              8. End of Loop 2 #############################
                                                因为每个实例都同时写入文件,而实例的输出是交错的。
                                                仅限制并发
                                                在下面的例子中,仅使用了限制并发操作。 它被配置为仅允许一个实例运行。 限制名为 LimitConcurrencyOnlyExample。
                                                从执行限制并发操作的时间起,直到规则链完成间,不会运行规则链的其他实例。 这些实例将在限制并发操作处排队,直到当前正在执行的实例完成。 如果有多个规则链实例在限制并发操作处排队,它们将以与排队相同的顺序被释放:
                                                如果上述规则集在作业中启用,并快速连续触发三次,将生成一个文本文件,其中包含以下输出:
                                                  • Starting Loop 1 *************************
                                                    Loop 1 - Iteration: 1
                                                    Loop 1 - Iteration: 2
                                                    Loop 1 - Iteration: 3
                                                  • End of Loop 1 ***************************
                                          1. Start Loop 2 ###############################
                                            Loop 2 - repetition: 1
                                            Loop 2 - repetition: 2
                                            Loop 2 - repetition: 3
                                          2. End of Loop 2 ###############################
                                                  • Starting Loop 1 *************************
                                                    Loop 1 - Iteration: 1
                                                    Loop 1 - Iteration: 2
                                                    Loop 1 - Iteration: 3
                                                  • End of Loop 1 ***************************
                                            1. Start Loop 2 ##############################
                                              Loop 2 - repetition: 1
                                              Loop 2 - repetition: 2
                                              Loop 2 - repetition: 3
                                            2. End of Loop 2 ##############################
                                                  • Starting Loop 1 *************************
                                                    Loop 1 - Iteration: 1
                                                    Loop 1 - Iteration: 2
                                                    Loop 1 - Iteration: 3
                                                  • End of Loop 1 ***************************
                                          3. Start Loop 2 ###############################
                                            Loop 2 - repetition: 1
                                            Loop 2 - repetition: 2
                                            Loop 2 - repetition: 3
                                          4. End of Loop 2 ###############################
                                            注意,一次只允许规则链的一个实例写入文件中。 每个实例都要完成两个循环,然后才允许下一个实例继续执行。 这是因为当每个实例都在限制并发操作处获得限制时,它将保持限制直到完成两个循环。 在第二次循环结束时,限制将自动释放,因为这是规则链的结尾。 然后在限制并发操作处等待的下一个实例将能够获得限制并继续。
                                            限制并发和释放并发
                                            以下示例中,同时使用了限制并发操作和释放并发操作。 限制并发释放并发操作对界定的规则链区域将限制为单实例运行。 任何其他实例将在限制并发操作处排队,直到当前正在执行的实例到达释放并发操作。 然后下一个等待实例将开始执行限制并发释放并发区域内的操作。
                                            如果上述规则集在作业中启用,并快速连续触发三次,将生成一个文本文件,其中包含以下输出:
                                                  • Starting Loop 1 *************************
                                                    Loop 1 - Iteration: 1
                                                    Loop 1 - Iteration: 2
                                                    Loop 1 - Iteration: 3
                                                  • End of Loop 1 ***************************
                                                  • Starting Loop 1 *************************
                                                    Loop 1 - Iteration: 1
                                                    Loop 1 - Iteration: 2
                                                    Loop 1 - Iteration: 3
                                                  • End of Loop 1 ***************************
                                                  • Starting Loop 1 *************************
                                                    Loop 1 - Iteration: 1
                                                    Loop 1 - Iteration: 2
                                                    Loop 1 - Iteration: 3
                                                  • End of Loop 1 ***************************
                                          5. Start Loop 2 ###############################
                                            Loop 2 - repetition: 1
                                            Loop 2 - repetition: 2
                                            Loop 2 - repetition: 3
                                          6. End of Loop 2 ###############################
                                            1. Start Loop 2 ##############################
                                              Loop 2 - repetition: 1
                                              Loop 2 - repetition: 2
                                              Loop 2 - repetition: 3
                                            2. End of Loop 2 ##############################
                                          7. Start Loop 2 ###############################
                                            Loop 2 - repetition: 1
                                            Loop 2 - repetition: 2
                                            Loop 2 - repetition: 3
                                          8. End of Loop 2 ###############################
                                            注意,和上一个示例中医院,循环中的输出不会交错,因为它在第一个示例中。 但它与上一个示例的区别在于,每个实例都被允许完成第一个循环,然后允许第一个实例继续执行第二个循环。 这是因为这两个循环之间实例被释放并重新获得限制,使得它有效地到达队列的末尾,然后必须等待再次获得限制。
  • No labels