On Fri, Apr 30, 2010 at 07:42:32PM -0400, Don Ward wrote:
I have a question about the thread safety of
gr_wavfile_sink::close(). The description says it is thread safe
and it uses d_mutex, but what is to stop the work() function from
writing the file at the same time that close() (via close_wav()) is
writing and closing the file? gr_wavfile_sink::work() does not lock
d_mutex (except when d_updated is set). Is there something going on
behind the scenes to prevent the threads from mangling the output
file, or is this a problem with the code?
The reason I am interested is because I would like to do something
similar with gr_udp_sink, allowing one socket to be closed and a new
one to be created when one client finishes and another client starts
up.
Thanks,
-- Don W.
It looks fairly hosed up. One fundamental design/documentation
problem is that the header file does not document which variables must
be protected by the mutex. Also, proper use of the mutex (including
in work) would eliminate all of the code related to d_updated.