Does the stack reserved/commited for a thread get freed when
- the thread terminates
- the thread object is destroyed
(i.e. the thread is terminated and all handles to the thread are closed)
?
More broadly, are there significant resources associated with a thread that has terminated, but still exists since there are valid handles to it?
Reason: I need to modify a kind of “scoped singleton”, so it doesn’t return a single object, but a per-thread object. I cannot rely on thread creation/termination notices, much less on process-wide ones.
At the moment, I store the objects in a map<ThreadID, Object>, with a cache cleanup policy that’s suitable for my application. To protect myself from the OS “recycling” thread ID’s, I keep an handle to the thread open. (Rec
A side effect would be holding open handles to long-terminated threads in some corner cases.
According to “Windows VIA C/C++” by Richter and Nasarre (A must-have book for any C++ Windwos programmer) p.154: