Was ist die Logik hinter zeroMQ Kontext?

Während stochern zeroMQ (Eine sehr nützliche Buchse Ersatz für diejenigen, die nicht wissen), stieß ich auf diese Frage in der mailing-Liste:

Mit mehreren Kontexten : gibt es einen Nachteil bei der Verwendung mehrerer Kontexte?

Ist es ein Nachteil, den die Verwendung mehrerer Kontexte? Ich habe eine wrapper-Klasse würde ich gerne behalten so einfach wie möglich. Ich kann entweder ändern Sie es, damit mehrere verbindet, Steckdosen usw. unter einem einzigen Kontext oder lassen Sie es wie es ist und haben Kunden der wrapper instanziert mehrere Male.

Zwei Nachteile, wie ich es sehe.

  1. Binden Ressourcen zu keinen guten Effekt (zusätzliche Speicher-footprint, ein weiteres I/O-thread, etc)
  2. Sockets erstellt, die in anderen Kontexten nicht kommunizieren miteinander, indem Sie die "inproc" Verkehr. Der name "inproc" ist ein wenig irreführend; es bedeutet eigentlich "intracontext."

cr

Rückblick auf meine und verschiedene andere source-code, den ich schließlich erkannte, dass der Kontext, set-up-code:

void *context = zmq_init (1); //creates the context 

void *responder = zmq_socket (context, ZMQ_REP); //creates the socket

zmq_bind (responder, "tcp://*:5555"); //and binds it

... //Do whatever you want with the socket ...

zmq_close (responder); //destructors
zmq_term (context);

Effektiv ersetzt durch:

void *context = zmq_init(1); //saving the context is optional

responder = zmq_socket(type); //creates the socket
//additional [context] can be provided if desired (multi-context?)

zmq_bind (responder, "tcp://*:5555"); //and binds it

... //Do whatever you want with the socket ...

zmqx_dest(); //destroys the global context, else provide alternative [context]

Und das ist es, was ich mit Makros. Es macht die Dinge einfacher, um 1 variable weniger zu verfolgen (unter 100 anderen). Obwohl Ihr weit entfernt von "ideal", als es erfordert die Makros werden innerhalb der gleichen "Funktionsumfang", obwohl dies könnte leicht gelöst werden.

Während meinem Beispiel ist C, das ist etwas sprachunabhängig.


Also die Frage, was ist der Sinn/nutzen der Schaffung solcher Kontexte?

Wenn Ihr tatsächlich ein Nachteil für eine solche Funktion? Ursache kann ich leicht voraussehen, viele (die einfach nur copy/paste/edit code), nicht berücksichtigt, die zusätzlichen Aufwand und erstellen "viele Zusammenhänge", wenn es nicht benötigt [gesehen das viele Male für andere, ähnliche Struktur, aber Ihre Existenz hat Ihre eigene Berechtigung]

Einer der Gründe, warum ich dies sage, ist die Tatsache, die ich in Betracht ziehen, zeroMQ, in eine Anfänger-Spiel-Programmierung-Modul. Ganz weitgehend teilweise aufgrund Ihrer Einfachheit und der Tatsache, dass die buchsen neigen zu braten Gehirnzellen für die neue Jungs.


Zufällig, dass ich tatsächlich gerechtfertigt, die Begründung von google ' s V8-Kontext-system (ähnliche Frage, anderes system):
Was ist der design-Idee, die hinter HandleScope?

InformationsquelleAutor PicoCreator | 2012-05-10
Schreibe einen Kommentar