[Top][All Lists]
[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:52:25 -0700 |
User-agent: |
Mutt/1.5.20 (2009-08-17) |
On Fri, Apr 30, 2010 at 08:48:48PM -0400, Don Ward wrote:
>
> ----- Original Message ----- From: "Eric Blossom" <address@hidden>
> To: "Don Ward" <address@hidden>
> Cc: "gnuradio mailing list" <address@hidden>
> Sent: Friday, April 30, 2010 8:25 PM
> Subject: Re: [Discuss-gnuradio] thread safety of gr_wavfile_sink::close()
>
>
> >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.
>
> So, it is ok to use the mutex across the work function?
Yes, as long as nobody who's holding it ever blocks.
> >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.
>
> Ok. Let me work on gr_udp_sink, then you can tell me how close I
> came to getting it right.
>
> -- Don W.
Thanks!
Eric