Isolation

由于Actions执行的并发性,很难保障对象内存的一致性访问和修改。为了避免竞争条件和其他并发相关的问题,有时候需要把一组Actions执行的效果与它之外的Actions执行的效果隔离开。这可以通过把StructuredActivityNode(包括其任意特定类型)的mustIsolate属性设置为来指明。

如果StructuredActivityNode的mustIsolate为真,那么节点内的一个Action对任意一个对象的访问不能与节点外一个Action对该对象的访问冲突。这里冲突指的是至少有一个Action试图写对象。如果存在这样的潜在冲突,那么不允许该StructuredActivityNode之外的Action与该节点对对象进行交错访问。本规范没有定义如何来保障该规则得到满足。执行引擎可以通过使用锁机制来实现隔离性,或者它可以将执行进行顺序化以避免冲突,或者使用一些其它方法。如果不能按照上述规则来执行一个模型,那么它就是不正确的(ill-formed)。

注意. 隔离性与原子性不同,后者保障一组Action要么全部成功执行,要么不产生任何效果。原子性通常需要一个回退机制来避免提交部分结果。

results matching ""

    No results matching ""