Return-Path: Delivered-To: apmail-apr-dev-archive@apr.apache.org Received: (qmail 45654 invoked by uid 500); 27 Dec 2001 23:55:20 -0000 Mailing-List: contact dev-help@apr.apache.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Delivered-To: mailing list dev@apr.apache.org Received: (qmail 45643 invoked from network); 27 Dec 2001 23:55:20 -0000 Date: Thu, 27 Dec 2001 15:53:44 -0800 From: Aaron Bannert To: APR developers Subject: Re: cvs commit: apr/test testthread.c Message-ID: <20011227155344.A1529@clove.org> Mail-Followup-To: Aaron Bannert , APR developers References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.23i X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N On Fri, Dec 28, 2001 at 10:47:53AM +1000, Brian Havard wrote: > On Thu, 27 Dec 2001 15:15:54 -0800, Aaron Bannert wrote: ... > >A problem with this is that it introduces a second way to return a > >status from an exiting thread. > > What's wrong with that? Both ways are already available so they should both > have the same type. It's a very simple change. I would agree, I'd just rather not have two ways of doing the same thing. It means we'll have to maintain it in two places, and it'll confuse people using our lib. > > One reason we need apr_thread_exit is > >so that we can exit the thread without falling all the way back to the > >initially called apr_thread_start_t function. > > >Another reason* why we need apr_thread_exit that I just relized is that > >it destroys the thread's pool. If the thread exits w/o calling > >apr_thread_exit then it is leaking memory. > > > >-aaron > > > >*I'll rush off and check all apr_thread_create's to make sure they > >have all the apr_thread_exit()s that they need. > > It'd be better to just make dummy_worker() do an apr_pool_destroy() before > returning. That prevents the leak while still allowing return to be used. I see no problem with that. Better yet, dummy_worker() could call apr_thread_exit() itself, since you'll never make it back into the return clause of dummy_worker() if you already called apr_thread_exit(). Still, I'm -0 on introducing two ways to do the same thing. -aaron