用于计算来自不同实例的响应数量的编码技术

时间:2016-05-26 02:29:47

标签: c++

我有一个班级CallerA和一个班级CalleeB
CalleeB具有队列并异步完成作业。
例如,如果CalleeB具有函数enqueue(int input)CallerA调用CalleeB.enqueue(1)CalleeB.enqueue(11),则输入11的结果可以比输入1更早返回。
现在,CallerA创建了10个CalleeB个实例。
CallerA将从1到5个增量到随机CalleeB实例输入,从6到10增量到随机CalleeB个实例,从11到15输入,依此类推。
CallerA将等待回调以接收来自CalleeB个实例的结果,如果收到所有1~5个结果,CallerA将会执行某些操作。此外,如果收到CallerA收到6到10,CallerA会做一些事情。
当然,输入1和6可能会转到相同的 CalleeB实例,并且6早于1返回。
是否有一种有效的技术来实现CallerA的计数结果{1}}?

1 个答案:

答案 0 :(得分:0)

  

是否有一种有效的技术来实现CallerA计数结果   来自CalleeB?

当然,CallerA只需要跟踪他收到的结果,这样当他收到所有5个结果时,他就可以对他们采取行动。

我这样做的方法是让CallerA维持unordered_map<int, Result>,并且每当从CalleeB收到结果时,将其放入unordered_map,然后检查该集合的其他4个结果也存在于unordered_map中;如果是这样,请从unordered_map中删除它们并处理它们。

或者,您可以保留一个包含5项子结果数组的10项数组,并将每个结果放入相应子数组中的相应插槽(slotIdx = i%5)中(arrayIdx = i / 5在将结果放入适当的子数组后,您可以检查子数组的插槽以查看它们是否全部填充,或者您可以增加特定于该子数组的计数器,当计数器达到5时,阵列必须已满。