Hello All,

I'm relatively new to 0MQ and like what I see so far.  I believe in my initial 
attempt to apply 0MQ to clean up some legacy socket code, I may have uncovered 
a use case that 0MQ does not yet address that may be generally useful for 
high-performance messaging.

The code in question takes a few separate data structures (matrices and 
associated metadata) and sends it to another process over a socket.  The most 
straightforward way for me to accomplish this with 0MQ is to create a message 
(I know the data structure's size ahead of time), pack the structures into 
contiguous memory managed by the message, and send with the 0MQ API.  The issue 
that I'm running into is that the matrices are rather large, and I don't want 
to incur the penalty of copying them into contiguous memory as required by the 
0MQ API.

0MQ seems to have a mechanism to avoid excessive copying by providing the 
memory for the underlying message.  However, this functionality requires the 
input data to be already stored in a single chunk of contiguous memory.

Has anyone considered implementing a message in 0MQ that would allow a 
developer to send several regions of memory as a message's content?  One idea 
to accomplish this would be to create a separate message constructor that took 
a list of memory regions (base + length) representing the message's content.  
Another idea to accomplish this is to provide a streaming interface that would 
allow a developer to append to a message without having to copy data.

What are your thoughts on this idea?  If this is something that would be 
generally useful to others, I'd be happy to contribute to an investigation or 
development effort.

Thanks,
Mike
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to