Code Monkey home page Code Monkey logo

Comments (4)

hun-nemethpeter avatar hun-nemethpeter commented on August 15, 2024 2

@yerden The sending will happen on an other thread. So you are just queuing the message. With zmq_send you can quckly assemble a message (even on the stack) and put it to the queue and then move on, releasing that message on your thread. The sending thread will release the copy of that message when it not needed anymore. In case of zmq_send_const you have to keep in memory the original message until the sending moment. And you have to find out when it happens somehow.

from cppzmq.

keith-dev avatar keith-dev commented on August 15, 2024

The implementation of zmq_send_const is kind of pointless. It constructs a message internally, uses it, and allows it to be destroyed.

I believe this is a poor implementation as it isn't really const as advertised. And thus this mess shouldn't be pushed into the C++ interface.

I am closing this ticket.

from cppzmq.

hun-nemethpeter avatar hun-nemethpeter commented on August 15, 2024

I think you misread the code. The zmq_send_const

    zmq_msg_t msg;
    int rc = zmq_msg_init_data (&msg, (void *)buf_, len_, NULL, NULL);

but the zmq_send

   zmq_msg_t msg;
    if (zmq_msg_init_size (&msg, len_))
        return -1;

    //  We explicitly allow a send from NULL, size zero
    if (len_) {
        assert (buf_);
        memcpy (zmq_msg_data (&msg), buf_, len_);
    }

So the zmq_send do a complete copy with malloc + memcpy but the zmq_send_const just use a buf_ and len_ variables for sending. There is a huge performance difference between the two version.

from cppzmq.

yerden avatar yerden commented on August 15, 2024

@hun-nemethpeter sorry for bringing it to sunlight but what are the benefits of calling zmq_send over zmq_send_const? What's the matter with malloc + memcpy? When zmq_send_const returns, can I modify the specified (and "sent") buffer?

from cppzmq.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.