시나리오 :코코아 분산 객체, 롱 폴링, launchd에 및 활동 모니터에 "응답 없음"
나는 맥 응용 프로그램과 (재단 클래스 작성)을 launchd에 데몬 사이에 분산 객체 기반 IPC 있습니다. 비동기 메시징과 관련하여 문제가 있었기 때문에 (예 : 서버의 루트 객체에 registerClient가 있고 서버의 루트 객체가 클라이언트의 프록시 객체에 메소드를 알리고 호출하는 이벤트가있을 때마다) 나는 오랫동안 폴링을 수행했는데, 클라이언트는 데몬으로부터 이벤트/통지 목록을 "수집"합니다. 이 "수확"은 NSArray 인스턴스를 반환하는 서버 객체 메서드 호출을 통해 수행됩니다.
몇 초 동안 서버 개체의 프로세스 (launchd를 통해 실행 됨) 옆에 "(응답 없음)"태그 (활동 모니터 내부)가 빨간색으로 표시되기 시작합니다. 제가 말했듯이, 기능면에서, 그것은 잘 작동하지만, 우리는이 "Not responding"라벨을 없애고 싶습니다.
"응답하지 않음"태그를 어떻게 방지 할 수 있습니까?
참고하시기 바랍니다. 이전에 launchd 기반 프로세스를 이미 수행했으며 이번에는 처음으로 롱 폴링을 수행했습니다. 또한 NSSocketPortName 기반 연결과 NSSocketPort 기반 연결도 시도했습니다. 그들은이 문제가 없었습니다. 잠금은 문제가 아니 었습니다. '사용 된 잠금 장치는 NSCondition 뿐이 었으며 우리는 프로그램을 로깅하고 디버깅했습니다. 실제로 잠겨있는 "문제"가 실제로 기능적으로 작동하는 수확 부분에있는 것처럼 보입니다. 또한 ObjC를 사용하여 서버 프로세스를 작성하는 동안 클라이언트 프로세스는 PyObjC로 작성됩니다.
미리 감사드립니다.
+1 최고의 오타를 위해! 나는 "lunch daemon !!"을 좋아한다. – kent
하하. 미안합니다. 어쨌든, 어쨌든 그것을 바 꾸었습니다. – jopes