Date: Wed, 8 Oct 2008 13:48:33 -0600 From: John Hein <jhein@timing.com> To: John Baldwin <jhb@freebsd.org> Cc: Daniel Eischen <deischen@freebsd.org>, freebsd-threads@freebsd.org Subject: Re: pthread_cleanup_push & pthread_cleanup_pop usage Message-ID: <18669.3729.459915.769388@gromit.timing.com> In-Reply-To: <200810081409.31822.jhb@freebsd.org> References: <18668.10465.699531.162573@gromit.timing.com> <200810081409.31822.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
John Baldwin wrote at 14:09 -0400 on Oct 8, 2008: > Don't Do That (tm). The spec explicitly states that they can be defined as > macros and that code using it needs to put them in the same block. Thanks for the responses. I like deischen's response best to work around the problem short term, but I suspect that's not very portable. And as jhb describes using it outside the same block violates the spirit of intended use. Note that the example I gave (pop off the cleanup stack in a catch block) is not our only "violation". We also push in one function and either never [explicitly] pop or possibly pop in another function. So that leaves me wondering about possible techniques for cleanup on thread cancellation or exit. Alfred touched on one method, and I see that pthread_key_create takes an optional destructor, so that sounds like a possible avenue to explore.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?18669.3729.459915.769388>
