gpt4 book ai didi

c++ - 是否可以在通过 UDP 发送数据时将数据流式传输到 ZeroMQ 消息中?

转载 作者:搜寻专家 更新时间:2023-10-31 00:30:56 26 4
gpt4 key购买 nike

我们正在处理 30fps 的延迟关键型应用程序,管道中有多个阶段(例如压缩、网络发送、图像处理、3D 计算、纹理分享等)。

通常我们可以像这样实现这些多个阶段:

[Process 1][Process 2][Process 3]

---------------time------------->

但是,如果我们可以堆叠这些进程,那么 [Process 1] 可能正在处理数据,它不断地将其结果传递给 [Process 2]。这类似于 iostream 在 c++ 中的工作方式,即“流”。使用线程,这可以减少延迟:

[Process 1]
[Process 2]
[Process 3]
<------time------->

假设 [Process 2] 是我们的 UDP 通信(即 [Process 1] 在计算机 A 上, [进程 3] 在计算机 B 上)。

[Process 1] 的输出大约为 3 MB(即通常 > 300 个 9 KB 的巨型数据包),因此我们可以假设当我们调用 ZeroMQ 时:

socket->send(message); // message size is 3 MB

然后在库或操作系统的某个地方,数据被拆分成数据包,这些数据包按顺序发送。此函数假定消息已经完全形成。

当通过 UDP 发送大数据时,是否有一种方法(例如 API)可以让部分消息“正在构建”或“按需构建”?这在接收方是否也可能(即允许在消息的开头采取行动,因为消息的其余部分仍在传入)。或者.. 是我们自己手动将数据拆分成更小块的唯一方法吗?

注意:
网络连接是计算机 A 和 B 之间的直线 GigE 连接。

最佳答案

不,你不能现实地做到这一点。 API 不提供它,ZeroMQ promise 接收者将收到完整的消息(包括多部分消息)或根本没有消息,这意味着它不会将消息呈现给接收者,直到它完全传输.在这里,将数据自己拆分为单独的可操作 block ,作为单独的 ZeroMQ 消息发送是正确的做法。

关于c++ - 是否可以在通过 UDP 发送数据时将数据流式传输到 ZeroMQ 消息中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35285836/

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