【发布时间】:2012-03-09 09:01:19
【问题描述】:
您会建议我如何在 C 中缓冲多个流(每个流都需要自己的缓冲区)?
我有点在我的脑海中提出了一个解决方案:
这是理论上的“伪代码”
[ptr, ptr, ptr, ptr ... ]
每个ptr 都是一个指向结构体的指针:
{
stream_id
buff_ptr
}
stream_id 是流的 ID(我有该信息),buff_ptr 是指向某些 malloced 数据的指针。此外,缓冲区可能必须灵活,并且必须多次调用 malloc 和 free 才能使其灵活(至少我认为会?
我基本上会通过遍历ptrs 的数组来找到我需要的缓冲区。
那么,那个“架构”好还是有更好的?
如果有人想知道“为什么 nyan 她需要那个?!”我在 Ruby/EventMachine 中创建了一个服务器,协议真的很烂(至少可以说),我不知道如何处理它......除非有办法强制 EventMachine 为我缓冲它,否则我想这将是最佳解决方案。
谢谢。
P.S: 很抱歉的狂欢! ~
【问题讨论】:
-
如果
stream_id是从0到N的整数,您可以使用buff_ptr的数组,而不必搜索structs 的列表来定位所需的流. -
@hmjd 啊,不是。我一开始也以为是有时是,有时不是。这一切有点随机,真的。实际上,它几乎从不以 0 开头——现在我想起来了。
-
stream_id是否有预定义范围?如果有,您可以使用稀疏数组。 -
@hmjd 不。据我所知,它通常从某个随机整数开始,然后递增,但它不会一直递增,有时它会随机地跳转到一个随机数,然后再次开始递增,依此类推。
标签: c buffer eventmachine