シナリオ:ココア分散オブジェクト、ロングポーリング、launchdのとアクティビティモニタに「応答なし」
私はマックのアプリケーションと(財団クラスで書かれた)はlaunchdデーモンとの間で分散型のオブジェクトベースのIPCを持っています。私は非同期メッセージングに関して問題があったので(例えば、私はregisterClientをサーバのルートオブジェクトに持っています。サーバのルートオブジェクトがクライアントのプロキシオブジェクトのメソッドを通知/呼び出しするイベントがあるときはいつでも)、私は長いポーリングを行いました。クライアントは、デーモンからのイベント/通知のリストを "収穫する"。この「収穫」は、サーバーオブジェクトメソッド呼び出しによって行われ、NSArrayインスタンスが返されます。
数秒間、サーバーオブジェクトのプロセス(launchdを介して起動される)が、(Activity Monitor内の)「(応答しない)」タグで赤色にラベル付けされるまで、かなりうまくいきます。私が言ったように、機能的にはうまくいきますが、この「応答しない」ラベルを取り除きたいだけです。
この「応答しない」タグを防止するにはどうすればよいですか?
参考までに、以前はすでにlaunchdベースのプロセスを実行していましたが、これは初めてロングポーリングしたときです。また、NSSocketPortNameベースの接続とNSSocketPortベースの接続も試しました。彼らはこの問題を抱えていませんでした。ロックは問題ではありませんでした。使用されているロックはNSConditionだけでした。私たちはプログラムをロギングしてデバッグしました。実際には機能的に動作するハーベスティング部分にロックの "問題"があるようです。また、クライアントプロセスはPyObjCで記述され、サーバープロセスはObjCを使用して記述されています。
ありがとうございます。
+1これまで最高の誤植!私は "ランチデーモン!"が大好きです! – kent
ハハ。申し訳ありません。とにかく、私はとにかくそれを変更しました。 – jopes