gpt4 book ai didi

c - C中的多缓冲区管理

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:16 27 4
gpt4 key购买 nike

您建议我如何在 C 中缓冲多个流(每个流都需要它自己的缓冲区)?

有点在脑海中组合了一个解决方案:

这是理论上的“伪代码”

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

每个 ptr 都是一个指向结构的指针:

{
stream_id
buff_ptr
}

stream_id 是流的 ID(我有该信息),buff_ptr 是指向某些 malloced 数据的指针。此外,缓冲区可能必须是灵活的,它必须多次调用 mallocfree 以使其灵活(至少我认为 会吗?

基本上,我会通过遍历 ptr 数组来找到我需要的缓冲区。


那么,这种“架构”好还是有更好的呢?

如果有人想知道“为什么 nyan 她需要那个?!”我在 Ruby/EventMachine 中做了一个服务器,协议(protocol)真的很糟糕(至少可以说)而且我不知道如何处理它......除非有办法强制 EventMachine 为我缓冲它,那我想这将是最佳解决方案。

谢谢。

P.S: 对不起! ~

最佳答案

嗯,这似乎是唯一的选择,但你可以改变一些事情:

  • 不要mallocfree。使用 realloc 代替
  • 遍历列表可能没问题,但如果有很多缓冲区

    • 你能让调用者传递给你一个指向缓冲区的指针吗?
    • 能否使用散列而不是列表并按 stream_id 进行搜索?例如glib2 provides such a hash

许多 API(例如 epoll)允许您将指针与 id(epoll 中的描述符)相关联。当该 id 发生一些有趣的事情时,API 会向您传递您的指针 -> 以 4-8 字节的内存为代价进行零搜索。

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com