2017-02-06 3 views
2

Ich habe den folgenden Code:Was ist die NetMQ-API für den Empfang in einem benutzerdefinierten Puffer, um zu vermeiden, ein neues Byte-Array für jeden Frame/Nachricht zu erstellen?

while (!isCancellationRequested) 
{ 
    byte[] frameBytes = socket.ReceiveFrameBytes(); 
    MyData data = new MyData(); 
    data.Deserialize(frameBytes); 
    // send the data somewhere somehow... 
} 

Was ich tun möchte, aber ich kann in der Dokumentation nicht finden, ist etwas, das auf jeder socket.Receive die Schaffung neuer Byte-Array vermeiden:

byte[] frameBytes = new byte[123]; 
while (!isCancellationRequested) 
{ 
    socket.ReceiveFrameBytes(frameBytes); 
    MyData data = new MyData(); 
    data.Deserialize(frameBytes); 
    // send the data somewhere somehow... 
} 

Wie kann ich das tun?

Antwort

2

Um hohe Leistung und Nullzuweisung mit NetMQ zu erhalten, müssen Sie den BufferPool aktivieren und die Msg-Struktur direkt verwenden.

BufferPool.SetBufferManagerBufferPool(1024 * 1024, 1024);  

while (!isCancellationRequested) 
{ 
    Msg msg = new Msg(); 
    msg.InitEmpty(); 
    socket.Receive(ref msg); 
    MyData data = new MyData(); 
    data.Deserialize(msg.Data, msg.Size); 
    msg.Close(); 
    // send the data somewhere somehow... 
} 
Verwandte Themen