以下为官方给出的 zmq c++多线程 demo ,我的项目也是从这个改版出来的,但是我遇到一个非常严重的问题,当我有多个客户端同时访问的时候就出现了问题。
情况如下:
我们假设 A/B/C 三个客户端,同时发送 a/b/c 给服务器,服务器的工作就是把接收到的字符串完全返回,正常的话,客户端应该接收到的回复也是 a/b/c 。
但是我这里会出现的情况是,收到: a/a/c 或 b/b/c 等
也就是说,会把应该分来应该发送给 a 的,也发送给了 b ,同时 b 的那条就丢失了
这种情况有人遇到过么?
#include
#include
#include
#include
#include
#include
void *worker_routine (void *arg)
{
zmq::context_t *context = (zmq::context_t *) arg;
zmq::socket_t socket (*context, ZMQ_REP);
socket.connect ("inproc://workers");
while (true) {
// Wait for next request from client
zmq::message_t request;
socket.recv (&request);
std::cout << "Received request: [" << (c