On Fri, 2018-03-23 at 08:54 -0400, Jasper Jaspers wrote:
> On the client side there are two threads.  Thread1 continually issues
> the
> zmq_send followed by zmq_recv.  Thread2 detects that the endpoint has
> changed.  When thread2 detects the endpoint has changed I'd like to
> unblock
> thread1 that's currently waiting for zmq_recv to finish.  Is it
> possible to
> have thread2 issue a zmq_disconnect to unblock the zmq_recv in
> thread1?

No, only the new thread-safe sockets can be used from multiple threads
- what you can do is add inproc zmq_pair sockets between thread1 and
thread2, and then instead of doing zmq_recv do zmq_poll in thread1 on
both the req socket and the inproc one - that way the poll will be
interrupted when thread2 sends the updated endpoint, and you can take
it from there in thread 1 (disconnect/connect).

> On Fri, Mar 23, 2018 at 7:36 AM, Luca Boccassi
> <luca.bocca...@gmail.com>
> wrote:
> 
> > On Thu, 2018-03-22 at 21:53 -0400, Jasper Jaspers wrote:
> > > In my application (C++ / Linux / zeromq 4.2)  there are several
> > > sockets
> > > within a single context.  Some of the REQ-REP sockets have
> > > transient
> > > servers and the clients need to be reconnected gracefully and
> > > quickly
> > > when
> > > the servers change.  I'm having problems reconnecting the client
> > > side
> > > of
> > > the REQ-REP socket when the server side changes.  The client's
> > > REQ
> > > socket
> > > is stuck waiting for a reply from the server's REP socket that it
> > > never
> > > gets.
> > > 
> > >  I have a way of notifying the client that the server has changed
> > > and
> > > it
> > > needs to reconnect, however I don't know how to unblock the
> > > client's
> > > receive call ( waiting for the reply).  I do have a timeout set
> > > on
> > > receive
> > > call but I'd like to have the client reconnect a lot sooner than
> > > waiting
> > > for the timeout to expire before reconnecting.  I see that
> > > calling
> > > zmq_term() on the context should unblock the receive call, but I
> > > can't use
> > > that since I have other connected sockets within the context that
> > > I
> > > don't
> > > want to disrupt.  Does anyone have a suggestion on how to resolve
> > > this?
> > 
> > If the endpoint stays the same look at the heartbeats options.
> > If the endpoint changes, you'll need to zmq_disconnect and
> > zmq_connect
> > 
> > --
> > Kind regards,
> > Luca Boccassi
> > _______________________________________________
> > zeromq-dev mailing list
> > zeromq-dev@lists.zeromq.org
> > https://lists.zeromq.org/mailman/listinfo/zeromq-dev
> > 
> > 
> 
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev@lists.zeromq.org
> https://lists.zeromq.org/mailman/listinfo/zeromq-dev

-- 
Kind regards,
Luca Boccassi

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
https://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to