discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] thread safety of gr_wavfile_sink::close()


From: Eric Blossom
Subject: Re: [Discuss-gnuradio] thread safety of gr_wavfile_sink::close()
Date: Fri, 30 Apr 2010 17:25:20 -0700
User-agent: Mutt/1.5.20 (2009-08-17)

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.

While I'm at it, set_bits_per_sample quietly fails for any value not
equal to 8 or 16.

gr_udp_sink has similar problems.

Eric




reply via email to

[Prev in Thread] Current Thread [Next in Thread]