Re: How to current close window while messages still in queue
On Tue, 04 Nov 2008 21:24:11 -0500, Joseph M. Newcomer
<newcomer@flounder.com> wrote:
But if I'm not using the object, and don't care about it, and haven't even stored a
pointer to it, why would I care when it is deleted? What aspect of "robustness" is
compromised here?
OK, so you received an "I'm done" message from the secondary thread. You
wrote the code that posts the message. However, the thread contains code
you didn't write that continues to run for some time, including things like
"delete this" for CWinThread objects; I described that in this message:
http://groups.google.com/group/microsoft.public.vc.mfc/msg/c6184946854e4a56?hl=en
During program termination, these secondary threads may thus continue to
run as the program is shutting down, as the primary thread runs atexit
functions (and destructors), and in general destroys the program
environment in which the threads are running. That should give anyone
pause. Allowing this is at odds with robustness; programs sometimes crash
when I close them, and I sometimes wonder if this is why.
As I wrote in this message, the sanest approach is to regard the MT
programming model as:
before main - single-threaded
main - may become multithreaded
after main - single-threaded
http://groups.google.com/group/comp.lang.c++.moderated/msg/c552868a5ddc212a?hl=en
One way to accomplish this is what I described here, particularly in Q2:
http://members.cox.net/doug_web/threads.htm
--
Doug Harrison
Visual C++ MVP