
Δεν έχω κάποιο κώδικα που δεν είχα αρχικά να δημιουργήσετε ότι χρησιμοποιεί \_beginthreadex και \_endthreadex. Για κάποιο λόγο, όταν καλεί \_endthreadex (0), η κλήση απλά κρέμεται και ποτέ δεν επιστρέφει. Οποιεσδήποτε ιδέες για το τι θα έπρεπε κανονικά να προκαλέσει αυτή η κλήση να κρεμάσει;

 
\_endthreadex (0) κολλάει
=========================



\_endthreadex τελειώνει το νήμα, έτσι ώστε να μην μπορεί να επιστρέψει. Αυτό είναι το νόημα του αποκαλώντας.


EDIT: Είναι λίγο ασυνήθιστο να καλέσετε \_endthreadex, κανονικά θα αφήσουμε την επιστροφή διαδικασία εκκίνησης το νήμα και το χρόνο εκτέλεσης καλεί \_endthreadex για εσάς. Μπορεί να χρειαστεί να εξηγήσετε λίγο περισσότερο, αυτό που προσπαθούμε να κάνουμε για να μπορέσουμε να βοηθήσουμε.

 

Η απάντησή μου είναι πολύ αργά, αλλά ακόμα κάποιος θα το χρησιμοποιήσει.


Στην περίπτωσή μου \_endthreadex κρεμάστηκε όταν ξεφορτώνουν dll και να διαγραφούν κάποια παγκόσμια αντικείμενα. Ένα από τα παγκόσμια αντικείμενα είχαν άλλο νήμα στο εσωτερικό και ότι το νήμα που εκτελούνται, επίσης, την έξοδο νήμα. Αυτό προκάλεσε αδιέξοδο διότι DllMain χάρτη ήδη κλειδωμένη μνήμη CRT. Διαβάστε DllMain βοήθεια και διαπιστώσετε ότι δεν επιτρέπεται να κάνει οποιαδήποτε άλλη ενέργεια σε άλλα θέματα ή διαδικασίες κατά τη διάρκεια DllMain κλήσης.

 

Είσαι λάθος κλήση [\_endthreadex ()](http://msdn.microsoft.com/en-us/library/hw264s73(VS.80).aspx) για να επιχειρήσει να τερματίσετε μια κλωστή από το κύριο νήμα;


Η λειτουργία [\_endthreadex ()](http://msdn.microsoft.com/en-us/library/hw264s73(VS.80).aspx) έχει ως στόχο να κληθεί μέσα στο νήμα που θέλετε να τερματίσετε να αναφέρετε μια τιμή επιστροφής, καθώς και για την κατάλληλη «ανάκτηση των πόρων που διατίθενται για το νήμα.» Δεν θα χρειαστεί να καλέσετε σε έναν καταστροφέα από το κύριο νήμα. Θα μπορούσε, σε καταστροφέα, σήμα με το νήμα μέσω ενός γεγονότος (βλ [SetEvent](http://msdn.microsoft.com/en-us/library/ms686211(VS.85).aspx) , καλείται από το κύριο νήμα) ότι το νήμα θα πρέπει να βγείτε το συντομότερο δυνατόν, και στη συνέχεια το νήμα που εξέρχεται τελευταία δήλωσή της, θα καλέσει [\_endthreadex ()](http://msdn.microsoft.com/en-us/library/hw264s73(VS.80).aspx) .


Κλήση [\_endthreadex ()](http://msdn.microsoft.com/en-us/library/hw264s73(VS.80).aspx) στο κύριο νήμα σας θα μπορούσε να προκαλέσει η διαδικασία να κρεμάσει, επειδή έχετε τερματιστεί κύριο νήμα σας, αλλά θα εξακολουθούν να έχουν το αρχικό νήμα θα ήθελε να τερματίσει ακόμη σε εξέλιξη.

 

Εντάξει .... καλά, endthreadex παίρνει κάλεσε την Deconstructor της τάξης μου μέσω «διαγραφή classinstance» ... και ότι η κλήση Deconstructor ποτέ δεν επιστρέφει ... έτσι το σύνολο κολλάει το πράγμα

 