|
Boost : |
From: Michael Glassford (glassfordm_at_[hidden])
Date: 2004-07-16 11:06:11
Michael Glassford wrote:
> I've made some changes to the Boost.Threads static linking support on
> Win32. Previously I had added back support for static linking, but
> without thread-specific storage classes. Now I've added the
> thread-specific storage classes back in, and exposed two functions that
> need to be called at the appropriate time:
>
> The function on_thread_exit() should be called when a thread exists, *in
> the context of the exiting thread*. The function on_process_exit()
> should be called when the process exit. If these functions are not
> called at the appropriate time, leaks may occur. If you know you don't
> need tss cleanup, of course you can just omit to call these functions.
>
> In addition, Boost.Threads static library on Win32 requires the user of
> the library to define a function called tss_cleanup_implemented(); if it
> is not defined, a link error results. The only purpose of this function
> is as a "link-time assertion": the linker error stating that the
> function is missing warns the the user of the necessity of calling the
> cleanup functions. In addition, if Boost.Threads later implements tss
> cleanup in the static library, the linker's duplicate symbol error
> should warn the user that their custom implementation is no longer needed.
>
> Comments?
Replying to myself: I forgot to mention: it's easy enough to make
threads created by Boost.Threads call on_thread_exit() after the thread
function exits. Does anyone see any drawbacks to doing this?
Mike
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk