CZMQ 设置发送 HWM / 设置接收 HWM

CZMQ set send HWM / set receive HWM

这不是一定有用吗?

#include <czmq.h>

zsock_t *sockout = zsock_new_pub("inproc://a");
zsock_set_sndhwm (sockout, 20);

如何设置 HWM and/or BUF 大小?

更新: 我添加了更多代码并在这种情况下工作:

#include <string>
#include <czmq.h>

int main (void){

    zsock_t *sockout = zsock_new_pub("inproc://a");
    zsock_set_sndhwm (sockout, 20);
    std::string data2send;
    for (size_t i = 0; i < 1000; i++){
        data2send = "data" + std::to_string(i);
        zsock_send(sockout, "s", data2send.c_str() );
    }
}

尽管 zsock_set_sndhwm (sockout, 20); 在此特定上下文中有效。 我必须找出它不起作用的上下文。

我正在回答我自己的问题以获得完整的解决方案pub/rec

发布商代码:

#include <string>
#include <czmq.h>

int main (void)
{
    zsock_t *sockout = zsock_new_pub("ipc://a");
    zsock_set_sndhwm (sockout, 20);
    zsock_set_rcvhwm (sockout, 20);

    std::string data2send;
    for (size_t i = 0; i < 1000; i++){
        data2send = "data: " + std::to_string(i);
        sleep(1);
        zsock_send(sockout, "s", data2send.c_str() );
    }
}

订阅者(接收者)代码:

#include <string>
#include <czmq.h>
#include <iostream>

int main (void){
    zsock_t *sockin = zsock_new_sub("ipc://a", "");
    zsock_set_sndhwm (sockin, 20);
    zsock_set_rcvhwm (sockin, 20);

    char *m;
    std::string m_str;

    while(true){
        zsock_recv(sockin, "s", &m);
        std::cout << "**READ: " << m << "\n\n";
    }
}