Scénario:cacao objets distribués, Polling long, launchd et "Pas de réponse" dans le Moniteur d'activité
J'ai un IPC à base Distributed objets entre une application mac et un démon launchd (écrit avec des classes Foundation). Comme j'avais déjà des problèmes concernant la messagerie asynchrone (par exemple, j'ai un registerClient: sur l'objet racine du serveur et chaque fois qu'il y a un événement notifiant l'objet racine du serveur/appelle une méthode dans l'objet proxy du client) Le client "récupère" les listes d'événements/notifications du démon. Cette "récolte" est effectuée via un appel de méthode d'objet serveur, qui renvoie ensuite une instance de NSArray. Cela fonctionne plutôt bien, jusqu'à ce que pendant quelques secondes, le processus de l'objet serveur (lancé par launchd) commence à être marqué rouge avec la balise "(Ne répond pas)" à côté (dans Activity Monitor). Comme je l'ai dit, fonctionnellement, ça marche bien, mais on veut juste se débarrasser de ce label "Ne répondant pas".
Comment puis-je empêcher cette étiquette "Ne répond pas"?
FYI, j'ai déjà fait des processus basés sur launchd auparavant et c'est la première fois que je faisais un long sondage. J'ai également essayé les connexions basées sur NSSocketPortNameServer et celles basées sur NSSocketPort. Ils n'avaient pas ce problème. Le verrouillage n'était pas aussi un problème car les verrous utilisés n'étaient que NSCondition et nous avons connecté et débogué le programme et il semble que le seul "problème" de verrouillage se trouve sur la partie récolte, qui fonctionne réellement. En outre, client-process est écrit en PyObjC pendant que le processus serveur a été écrit en utilisant ObjC.
Merci d'avance.
+1 pour la meilleure faute de frappe! J'adore le "démon du déjeuner !!" – kent
Haha. Désolé pour ça. Quoi qu'il en soit, je l'ai changé quand même. – jopes