我在解决代码中的问题时遇到了一些麻烦,希望您能帮助我。
我有两个模块,A
和B
. 模块向 发出A
请求B
,并在多个周期后B
向 发送多周期响应A
。A
最多可以容纳 8 个等待响应的请求,并且来自的响应B
不一定按顺序返回。这就是我们使用 ID 来识别返回数据的原因。
为了验证这种行为,我有一个带有几个跳棋的记分牌。我所做的一项检查是用于请求的 ID 是否免费。为此,我保留了一个关联数组,其中包含待响应的 ID,并根据需要插入、检查和删除项目。我通过两个接口和监视器控制它,一个用于请求,另一个用于响应。响应监视器,作为超过一个周期长的响应,等待直到它拥有所有数据以将事务发送到记分板,在那里我更新我的结构。
问题出现的那一刻,一旦A
看到它实际上从 获得有效响应B
,就会释放 ID 并可以将其用于新请求。这发生在我的一些模拟中,并且由于在所有响应完成之前我不会收到交易,因此块A
正在使用 ID 进行新请求,直到我从监视器。
关于如何解决这个问题的任何想法?谢谢!