Re: Monitor Thread In DLL
From: James Brown (remove_james_dot_brown7_at_virgin_dot_net)
Date: 12/09/04
- Next message: Matt: "Re: Monitor Thread In DLL"
- Previous message: Matt: "Monitor Thread In DLL"
- In reply to: Matt: "Monitor Thread In DLL"
- Next in thread: Matt: "Re: Monitor Thread In DLL"
- Reply: Matt: "Re: Monitor Thread In DLL"
- Messages sorted by: [ date ] [ thread ]
Date: Thu, 9 Dec 2004 21:25:13 -0000
Can you not take advantage of the DLL_PROCESS_DETACH
message that your DLL will receive just before it is unloaded??
then signal an event that your monitor thread is listening on,
finally wait for the thread to exit using WaitForSingleObject..
then exit DllMain..
-- James --- www.catch22.net Free win32 software, sourcecode and tutorials ----- Please de-spam my email address before replying. "Matt" <none@none.com> wrote in message news:OJDLoFj3EHA.3624@TK2MSFTNGP14.phx.gbl... > > Hi, > > I am creating a monitor thread in a WIN32 DLL. I'd like the monitor > thread to stay around for the life of the DLL and then exit cleanly before > the DLL is detached. > > My problem is, I do not know how to "safely" do this. I have tried using > the atexit() function inside the DLL to trigger the monitor thread > termination, but it is already too late by then. It looks like the C++ > run time calls: > > atexit() for the EXE > ExitProcess() -> Kills all active worker threads using TerminateThread(). > atexit() for each DLL during the detach phase. > > I really want to avoid having my worker thread killed by > TerminateThread(). I could get around this by requiring the user to call > some type of cleanup function, but I would like to avoid doing that as > well (because some users may forget to call it). > > CleanupStuff(), waits for thread shutdown. Cleans up the thread nicely. > atexit() for the EXE > ExitProcess() -> Kills all active worker threads using TerminateThread(). > atexit() for each DLL during the detach phase. > > I could try implicitly loading the atexit() function for the executable > and add in my cleanup code there, but that seems very much like a hack to > me. > > LoadLib for the atexit() func for the EXE. Call it. > atexit() for the EXE. Calls my cleanup function and waits for thread > shutdown. Cleans up the thread nicely. > ExitProcess() -> Kills all active worker threads using TerminateThread(). > atexit() for each DLL during the detach phase. > > Any suggestions would be appreciated. > > Thanks, > > Matt > > > > > >
- Next message: Matt: "Re: Monitor Thread In DLL"
- Previous message: Matt: "Monitor Thread In DLL"
- In reply to: Matt: "Monitor Thread In DLL"
- Next in thread: Matt: "Re: Monitor Thread In DLL"
- Reply: Matt: "Re: Monitor Thread In DLL"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|