您建议我在C中如何缓冲多个流(每个流都需要自己的缓冲区)?
我在脑子里想了个办法:
这是理论上的“伪码”

[ptr, ptr, ptr, ptr ... ]

每个ptr都是指向结构的指针:
{
    stream_id
    buff_ptr
}

stream_id是流的ID(我有这个信息),buff_ptr是指向一些malloced数据的指针。此外,缓冲器可能必须是灵活的,它不得不调用mallocfree使其变得灵活(至少我认为它会)。
我基本上可以通过遍历ptrs数组来找到所需的缓冲区。
那么,那“建筑”是好的,还是有更好的?
如果有人想知道“为什么尼安人需要这个?!“我用Ruby/EventMachine做了一个服务器,协议真的很烂(至少可以这么说),我不知道还能怎么处理。。。除非有办法强迫EventMachine为我缓冲它,否则这将是最好的解决方案,我想。
谢谢。
警察:对不起,狂欢!~

最佳答案

嗯,这似乎是唯一的选择,但你可以改变一些事情:
不要mallocfree。使用realloc代替
遍历列表可能没问题,但是如果有很多缓冲区
你能让调用者给你一个指向缓冲区的指针吗?
你能用散列而不是列表来搜索吗?例如stream_id provides such a hash
许多api(例如epoll)允许将指针与id(epoll中的描述符)相关联。当这个id发生一些有趣的事情时,API会以4-8字节的内存为代价将指针->零搜索传递给您。

关于c - C中的多缓冲区管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9337112/

10-15 00:24