2015-02-25 2 views
0

Un appel à thread_info renvoie maintenant MACH_SEND_INVALID_DEST au lieu de KERN_SUCCESS et je ne comprends pas encore ce qui a causé cette nouvelle circonstance.thread_info renvoie MACH_SEND_INVALID_DEST au lieu de KERN_SUCCESS

Quelle pourrait être la raison de cette valeur de retour. Je passe un valide obtenu de mach_thread_self() lorsqu'il est appelé à l'intérieur d'un NSOperation en tant que thread_act_t (c'est-à-dire le premier paramètre). Au moment où l'appel à thread_info() est effectué, l'opération peut être terminée mais son NSOperationQueue est toujours conservé. Est-ce que NSOperation peut avoir exécuté sur un thread qui n'existe plus au moment de l'appel?

Fondamentalement, je veux savoir combien de temps l'opération a pris en termes d'utilisateur du thread et l'heure du système. L'opération appelle un service asynchrone à sa fin, thread_info() est appelée à partir du gestionnaire d'achèvement de ce service.

Répondre

0

I maintenant wait pour un NSCondition à l'intérieur du NSOperation (après qu'il a invoqué le service asynchrone, à savoir à sa fin) et il signal dans le gestionnaire d'achèvement. Cela semble avoir résolu le problème.