On Fri, Jan 17, 2014 at 4:35 AM, Goswin von Brederlow <[email protected]>wrote:
> On Thu, Jan 16, 2014 at 09:11:48PM -0600, Kenneth Adam Miller wrote: > > On Wed, Jan 15, 2014 at 8:36 AM, Goswin von Brederlow <[email protected] > >wrote: > > > All those threads get confusing. Lets draw a picture: > > > > > > > +--------------------------------------------------------------------+ > > > | > | > > > v > | > > > Pool A Thread Set 1 Router X > | > > > PULL-PUSH --==> PULL-read-PUSH ==--> PULL-PUSH --==> PULL Thread Set 2 > PUSH > > > \ / > > > +-compress-+ > > > Pool B / \ > > > PULL-PUSH --==> PULL > PUSH > > > ^ > || > > > | > || > > > +----------- PUSH-write-PULL > <--==++ > > > Thread 3 > > > > > > > > So, I believe this is pretty close, but if I'm right, but you created a > > router to deal with a N-M situation, when in actuality a slightly > different > > configuration is needed in order to make that work. I could be > > understanding this wrong, but after I looked at the examples some more, I > > think things started to finally click. I think the multi-threaded example > > given in the manual that used a router and a dealer required that the > > sockets be of type REQ and REP in order to work. I don't think that PUSH > > and PULL is, at least not according to the reference guide on zmq_socket. > > Is that correct? I'm pretty sure that the only thing that you got wrong > is > > to illustrate that router takes requests in from thread set 1 and > shuttles > > them out to thread set 2 as replies. > > I just called the thread router because it routes messages from Thread > Set 1 to Thread Set 2. I didn't use a ROUTER/DEALER socket for it as > I believe the guide has for its router example. > > But that is because the other endpoints are PUSH and PULL so messages > go strictly one way and I only need PULL and PUSH to complement them > in the router thread. On the other hand I'm fairly new to zmq, too. So > I could be wrong. > > MfG > Goswin > Oh awesome, thanks! Ok, so last question-I think now that I'm actually implementing what you drew that request reply is actually the design that I want; because any time a thread group needs a resource, it should be able to request it that way the other can know to send it. Is this the right way to go about it? Because I was actually going to make a request pattern with PUSH and PULL and realized that if I did that, that I had no guarantee that the reply would get sent back to the sender. If I didn't have a pattern that would allow me to send a resource back to a requesting thread, then I would have to flush the thread groups' PULL sockets with handles, and I would have no way to know if even the number that I flushed in there was enough to satisfy their needs. It could result in performance degradation. > _______________________________________________ > zeromq-dev mailing list > [email protected] > http://lists.zeromq.org/mailman/listinfo/zeromq-dev >
_______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
