【发布时间】:2015-09-14 01:27:22
【问题描述】:
我正在研究 ZeroMQ,看看它是否适合软实时应用程序。我很高兴看到小型有效载荷的延迟在 30 微秒左右的范围内。但是在我的简单测试中,我得到了大约 300 微秒。
我有一个简单的发布者和订阅者,基本上是从网络上的示例复制而来,我通过 localhost 发送一个字节。
我已经和不同的sockopts 玩了大约两天,我正在三振出局。
任何帮助将不胜感激!
发布者发布者:
#include <iostream>
#include <zmq.hpp>
#include <unistd.h>
#include <sys/time.h>
int main()
{
zmq::context_t context (1);
zmq::socket_t publisher (context, ZMQ_PUB);
publisher.bind("tcp://*:5556");
struct timeval timeofday;
zmq::message_t msg(1);
while(true)
{
gettimeofday(&timeofday,NULL);
publisher.send(msg);
std::cout << timeofday.tv_sec << ", " << timeofday.tv_usec << std::endl;
usleep(1000000);
}
}
订阅者抄写员:
#include <iostream>
#include <zmq.hpp>
#include <sys/time.h>
int main()
{
zmq::context_t context (1);
zmq::socket_t subscriber (context, ZMQ_SUB);
subscriber.connect("tcp://localhost:5556");
subscriber.setsockopt(ZMQ_SUBSCRIBE, "", 0);
struct timeval timeofday;
zmq::message_t update;
while(true)
{
subscriber.recv(&update);
gettimeofday(&timeofday,NULL);
std::cout << timeofday.tv_sec << ", " << timeofday.tv_usec << std::endl;
}
}
【问题讨论】:
-
在this question 上阅读了这篇文章和你的cmets,你最好的选择可能是去zmq mailing list