fix leaking thread handles on Windows #3147
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix #3051. On Windows, thread handles should be closed explicitly.
ZSTD_pthread_join()
function is called when shuting down the threads queue, so no need to setthread.handle
to 0._beginthreadex()
function, there is an example at the bottom of this MSDN page that matches zstd code.A Python reproduce code (with pyzstd module), it uses 12 threads to compress
INPUT
file:Reproduce code output. Before this PR, it leaks 12 handles per round: