0

我在解决代码中的问题时遇到了一些麻烦,希望您能帮助我。

我有两个模块,AB. 模块向 发出A请求B,并在多个周期后B向 发送多周期响应AA最多可以容纳 8 个等待响应的请求,并且来自的响应B不一定按顺序返回。这就是我们使用 ID 来识别返回数据的原因。

为了验证这种行为,我有一个带有几个跳棋的记分牌。我所做的一项检查是用于请求的 ID 是否免费。为此,我保留了一个关联数组,其中包含待响应的 ID,并根据需要插入、检查和删除项目。我通过两个接口和监视器控制它,一个用于请求,另一个用于响应。响应监视器,作为超过一个周期长的响应,等待直到它拥有所有数据以将事务发送到记分板,在那里我更新我的结构。

问题出现的那一刻,一旦A看到它实际上从 获得有效响应B,就会释放 ID 并可以将其用于新请求。这发生在我的一些模拟中,并且由于在所有响应完成之前我不会收到交易,因此块A正在使用 ID 进行新请求,直到我从监视器。

关于如何解决这个问题的任何想法?谢谢!

4

1 回答 1

1

在您看到来自 B 的响应的循环中,为什​​么不将请求从 A 移到另一个关联数组中,该数组表示已启动的响应。这样,您将在原始数组中有一个空闲槽来处理来自 A 的新请求,但现在您将拥有新的第二个数组来处理已经开始的多周期响应。

于 2014-05-27T16:36:36.037 回答