如何同时删除数据并将数据添加到数据存储?

时间:2018-06-17 12:31:22

标签: alloy

我正在创建一个简单的网络模型。网络包含节点。每个节点都有一个数据存储。节点将数据从其数据存储发送到其他节点。

sig Node { 
    data: Data -> Time,
    send: Data -> Node -> Time 
}

假设节点n在时间段t-t'期间将数据d发送到节点n':

n.send.t' = n.send.t + d -> n'

节点n'的数据存储用d:

更新
n'.data.t' = n'.data.t + d

由于节点n已处理数据(即发送数据),因此n 从其数据存储中删除 d:

n.data.t' = n.data.t - d

假设在同一时间段内,另一个节点N向节点n发送了相同的数据d。这导致 d添加到n的数据存储中:

n.data.t' = n.data.t + d

糟糕!有一个矛盾:

n.data.t' = n.data.t - d
n.data.t' = n.data.t + d

没有令人满意的情况。该怎么办?如何处理从数据存储中删除d的节点,同时将d添加到其数据存储中?

1 个答案:

答案 0 :(得分:1)

只需定义n.data.t'在n.data.t和n' .send.t方面,对于所有其他节点n',包括n。