首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C#进行缓冲池管理

使用C#进行缓冲池管理
EN

Stack Overflow用户
提问于 2008-11-11 19:38:56
回答 5查看 7.3K关注 0票数 6

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

本质上,应用程序在设备进入时接收消息(在短时间内可能会有许多消息)。我们需要在某种类型的缓冲池中对它们进行排队,这样我们才能以托管的方式处理它们。

我们正在考虑以256字节为单位分配一个内存块(所有消息都小于这个大小),然后使用缓冲池管理来拥有一个可用于传入消息的缓冲池和一个准备处理的缓冲池。

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

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

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

EN

Stack Overflow用户

发布于 2008-11-11 21:14:00

我也在做类似的事情。我有从MTA线程传入的消息,需要在STA线程上提供服务。

我使用了一个BlockingCollection (并行fx扩展的一部分),它由几个STA线程监控(可配置,但缺省为xr *内核数量)。每个线程都会尝试从队列中弹出一条消息。它们要么超时并重试,要么成功弹出一条消息并为其提供服务。

我已经将它与perfmon计数器连接起来,以跟踪空闲时间、作业长度、传入消息等,这些可以用来调整队列的设置。

您必须实现一个自定义集合,或者可能扩展BC,以实现队列项优先级。

我以这种方式实现它的原因之一是,据我所知,queueing theory通常偏爱单行、多服务器(为什么我觉得我会对此一无所知?)。

票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/281924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档