문제

대본:

MAC 응용 프로그램과 발사 데몬 (기초 클래스로 작성)간에 분산 오브젝트 기반 IPC가 있습니다. 비동기 메시징에 관한 문제가 있었기 때문에 (예 : 레지스터가 있습니다 : 서버의 루트 객체와 이벤트가있을 때마다 서버의 루트 객체가 클라이언트 프록시 객체에서 메소드를 알거나 호출 할 수 있습니다). 클라이언트 "수확"데몬에서 이벤트 / 알림 목록. 이 "Harvest"는 서버 객체 메소드 호출을 통해 수행되며 NSARRAY 인스턴스를 반환합니다.

몇 초 동안 서버 객체의 프로세스 (시작된 시작)가 "(응답하지 않음)"옆에있는 태그 (내부 활동 모니터)로 빨간색으로 표시되기 시작합니다. 내가 말했듯이 기능적으로 잘 작동하지만이 "응답하지 않는"레이블을 제거하고 싶습니다.

이 "응답하지 않음"태그를 어떻게 방지 할 수 있습니까?

참고로, 나는 이미 전에 기반 프로세스를 시작했으며 이것이 처음으로 오랫동안 폴링을 한 것입니다. 또한 NSSocketPortNameserver 기반 연결 및 NSSocketPort 기반 연결을 시도했습니다. 그들은이 문제가 없었습니다. 잠금은 또한 '사용 된 자물쇠가 단지 nscondition의 문제가 아니며 우리는 프로그램을 기록하고 디버깅했으며 실제로 수확 부분에있는 유일한 잠금 "문제"인 것 같습니다. 실제로 기능적으로 작동합니다. 또한 Client-Process는 PYOBJC로 작성되는 동안 서버 프로세스는 OBJC를 사용하여 작성되었습니다.

미리 감사드립니다.

도움이 되었습니까?

해결책 3

내 문제는 실제로 서명을 사용하여 프로세스의 PID를 얻는 요청이었습니다. FNDR... 그 부분은 "응답하지 않는"오류를 일으켰으며 결코 자물쇠 나 긴 폴링 부분이 아니 었습니다. 이 사람들에 대해 죄송합니다. 그러나 내가 이미 대답을 찾은 신에게 감사합니다.

다른 팁

견본 그것이 무엇을하고 있는지 또는 기다리고있는 일을 찾는 과정.

Peter는 접근 방식에서 정확하지만 간단한 검사를 통해 파악할 수 있습니다. "응답하지 않음"이란 이벤트 큐에서 이벤트를 5 초 이상 처리하지 않는다는 것을 의미합니다 (2 초에 사용되었지만 10.4에서 증가했습니다). UI 프로세스의 경우 회전 대기 커서가 발생하지만 UI가 아닌 프로세스의 경우 효과가 쉽게 볼 수 없습니다.

이것이 Runloop 기반 프로그램 인 경우, 런 루프 및 콜백 (Async)으로 수행 해야하는 차단 (동기) 작업으로 무언가를하고 있음을 의미합니다. 또는 블록 작업을 처리하려면 두 번째 스레드가 필요하므로 메인 스레드가 이벤트에 계속 응답 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top