C# · 12月 24, 2021

使用C#进行缓冲池管理

我们需要为使用C#开发的应用程序开发某种缓冲区管理.

从本质上讲,应用程序会在设备进入时接收消息(在很短的时间内可能存在很多消息).我们需要在某种缓冲池中将它们排队,以便我们可以以托管方式处理它们.

我们考虑以256字节块分配一块内存(所有消息都小于该值),然后使用缓冲池管理来获得可用于传入消息的可用缓冲池以及准备处理的缓冲池.

因此,流程将是“获取缓冲区”(处理它)“释放缓冲区”或“将其保留在池中”.我们还需要知道缓冲区何时填满.

潜在地,我们还需要一种方法来“窥视”缓冲区,以查看池中优先级最高的缓冲区是什么,而不是总是获取下一个缓冲区.

在.NET中是否已经支持此功能,或者是否有一些我们可以使用的开源代码?

解决方法 C#sharps内存管理实际上相当不错,因此您可以直接分配所需的内容并将其粘贴到队列中,而不是拥有缓冲池.完成缓冲后,让垃圾收集器处理它.

另一个选择(对应用程序知之甚少)是在获取消息时最小化处理消息,并将它们转换为完整的对象(具有优先级和全部),然后您的队列可以通过调查正确的集合来确定它们的优先级属性或方法.

如果您的消息进入速度太快,即使是最少的处理,您也可以使用两个队列系统.一个是未处理缓冲区的队列,下一个队列是从缓冲区构建的消息对象队列.

我希望这有帮助.