The thread pool provides a number of functions named
...WhenCallbackReturns
.
What's the point of all these functions?
Why can't you just do the operation yourself
immediately before returning?
We saw
FreeLibraryWhenCallbackReturns
last time.
What's the point of the others?
Basically,
the same thing as
FreeLibraryWhenCallbackReturns
.
It's a way to release a resource
after
execution has left the function and
the callback is marked as complete.
In the case of a synchronization resource,
that resource may be what's keeping somebody from unloading
your DLL,
or it might protect a race condition between the callback
function and a function that tries to cancel the callback.