Thanks for the quick and informative reply. 

Matt Darnall

> On Feb 18, 2014, at 2:57 AM, Pieter Hintjens <[email protected]> wrote:
> 
> There are two reasons to call zmq_ctx_term. One is to flush messages,
> in some use cases. Closing a socket won't wait for messages to be
> sent.
> 
> The other reason in C at least is to ensure all memory is freed at
> exit, so you can run under memory leak checkers like valgrind, to
> catch other leaks. If you don't terminate the context (and close all
> sockets) you will get masses of reports on those, and miss others.
> 
> In languages that can destroy objects automatically when they go out
> of scope, you don't need to call zmq_ctx_term.
> -Pieter
> 
>> On Tue, Feb 18, 2014 at 2:48 AM, Matthew Darnall <[email protected]> wrote:
>> I have read a couple good posts about how to clean up zmq when exitting an
>> application to prevent hanging.  For instance:
>> http://zguide.zeromq.org/page:all#Making-a-Clean-Exit
>> and
>> http://zeromq.org/whitepapers:0mq-termination
>> 
>> One thing I am not sure of though: why do we need to call zmq_term at all if
>> we are exiting an application? Won't the OS just release all the resources
>> automatically when the process finishes?  I can understand closing sockets
>> during the execution of the application to free resources, but why do we
>> need to call zmq_term before the application exits?
>> 
>> Thanks,
>> Matt
>> 
>> _______________________________________________
>> 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
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to