我有一个应用程序将从 udp 连接读取序列数据包。这些消息需要与它们的序列号一起存储在某种形式的缓冲区中以供查找。
这个“缓冲区”由另一个删除消息并处理它的线程提供服务。如果缺少序列号,我将停止服务线程,然后在另一个 TCP 连接上重新请求消息。一旦它到达,我想把它放回缓冲区,服务线程可以继续。
所以我需要:按键插入,按最低键删除。键将是一个递增的数字,例如 1、2、3、4,因此它可以更容易地跟踪最高数字,因为键可以递增/递减,从而避免了对数据结构进行排序的需要。
My one plan is to use a Dictionary as the buffer, which makes for a simple solution
My other solution uses a set up two queues
Suggestion by zmbg to use SortedList - I am concerned about performance, as hashing would provide faster lookup and insert not?
我的问题是:
- 基本上,我正在使用该解决方案的字典来寻找内存或性能方面的缺陷。运行它的机器没有太多内存,但吞吐量性能的优先级略高。
- 如果这个应用程序整天运行,在使用字典时会不会有任何内存相关的问题?
- 有没有人对此过程或替代实施有任何想法。我必须决定一个设计,但我无法测试不同的性能解决方案,因为我没有足够的时间,所以我想在开始之前尝试收集一些想法和实现想法的优点。