使用C#进行缓冲池管理

nzp*_*mad 6 c# buffer pool

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

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

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

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

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

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

gri*_*eve 4

C# Sharps 内存管理实际上非常好,因此您可以直接分配所需的内容并将其放入队列中,而不需要使用缓冲区池。一旦你完成了缓冲区的工作,就让垃圾收集器来处理它。

另一种选择(对您的应用程序知之甚少)是在收到消息时对其进行最低程度的处理,并将它们转变为成熟的对象(具有优先级和所有内容),然后您的队列只需通过调查正确的集合即可对它们进行优先级排序属性或方法。

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

我希望这有帮助。