我正在使用一个使用cppZmq绑定的本机应用程序。我的消息传递代理从ZMQ_ROUTER读取消息,并在应用一些负载平衡逻辑后将它们转发到另一个ZMQ_ROUTER。我使用message_t类来recv数据(内部只调用带有zmq_msg_t结构的zmq_recv)。
在我的轮询循环中,我可以使用message_t变量(在循环外分配的堆栈)来接收消息,转发到套接字,然后使用相同的message_t变量在循环的下一次迭代中接收另一条消息吗?或者,我应该堆栈在轮询循环中分配message_t变量;换句话说,在使用相同的zmq_msg_t变量执行zmq_recv之前,zmq_close消息是否必不可少zmq_msg_init?这可能没有可测量的性能考虑因素,但目标是在开发周期中尽量避免错误。
另外,我可以从一个套接字中获取zmq_msg_t结构并将其转发到另一个套接字而不创建新的消息结构,并在其上执行zmq_msg_copy吗?
答案 0 :(得分:1)
我强烈建议在尝试优化之前先获得有效的解决方案。这些天,内存分配器非常有效;当你来分析你的应用程序时,内存分配可能甚至不会注册。但是,如果需要内存优化,您将能够发布一些工作代码,这将更容易评论。 [从文本描述中可视化代码非常困难。]