gpt4 book ai didi

c++ - 实时线程中的 ZeroMQ inproc PubSub send() 调用会导致严重阻塞吗?

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

一般而言,实时生产者线程需要一个环形缓冲区才能获得不错的性能。

但在我的例子中,我有一些延迟限制,所以我很想摆脱 Producer 的环形缓冲区,并在它们出现时推出单独的数据缓冲区。然后我只在消费者(较慢)端使用环形缓冲区。而且我很想避免通过关键部分进行线程锁定。

由于 ZMQ 不需要线程锁定,我想知道是否可以为此使用 inproc PubSub 模式。知道网络 I/O 在实时线程中不受欢迎,我仍然很好奇 inproc 协议(protocol)是否能带来任何不同,即更好的性能。

所以问题是:我能否使用带有 inproc 协议(protocol)的 ZMQ PubSub 在实时线程中实现低延迟无锁/无阻塞数据传输?

最佳答案

Q : Can I achieve low-latency lock-free/blocking-free data delivery in a realtime thread using ZMQ PubSub with inproc protocol?

是的。


足以实例化一个无线程的 Context(0)-实例:

No I/O threads are involved in passing messages using the inproc transport. Therefore, if you are using a ØMQ context for in-process messaging only you can initialise the context with zero I/O threads


亲和性(明智地计划绑定(bind))技巧可能会进一步削减数百个[ns],因为可能会避免所有 R/T 处理承担从核心到核心的大量附加延迟成本-核心 NUMA-非本地内存访问。

关于c++ - 实时线程中的 ZeroMQ inproc PubSub send() 调用会导致严重阻塞吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58126624/

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