首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >活动监视器中的可可分布对象、长轮询、启动和“未响应”

活动监视器中的可可分布对象、长轮询、启动和“未响应”
EN

Stack Overflow用户
提问于 2009-06-25 13:47:10
回答 3查看 946关注 0票数 3

设想情况:

我在mac应用程序和launchd守护进程(用基金会类编写)之间有一个基于分布式对象的IPC。因为我以前在异步消息传递方面有问题(例如,我有一个registerClient:服务器的根对象上有一个事件,并且每当服务器的根对象通知/调用客户机的代理对象中的一个方法),所以我做了长轮询,这意味着客户机从守护进程中“获取”事件/通知的列表。这个“收获”是通过服务器对象方法调用完成的,然后服务器对象方法调用返回一个NSArray实例。

它运行得很好,直到有几秒钟,服务器对象的进程(通过启动的通道启动)开始被标记为红色,旁边有“(未响应)”标记()。就像我说的,在功能上,它工作得很好,但是我们只是想去掉这个“没有响应”的标签。

如何防止这个“未响应”标记?

FYI,我之前已经做过基于启动的进程,这是我第一次做长时间轮询。此外,我尝试了基于NSSocketPortNameServer的连接和基于NSSocketPort的连接。他们没有这个问题。锁定也不是一个问题,因为所使用的锁只是NSCondition的锁,我们登录并调试了程序,似乎唯一的锁定“问题”是在收获部分,实际上,这在功能上是有效的。同时,客户端进程是用PyObjC编写的,而服务器进程是用ObjC编写的。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-25 23:45:07

我的问题实际上是调用使用签名FNDR获取进程的PID .该部分导致了“未响应”错误,并且它从来不是锁或长轮询部分。对这家伙很抱歉。但谢天谢地我已经找到答案了。

票数 2
EN

Stack Overflow用户

发布于 2009-06-25 21:33:30

示例这个过程来找出它在做什么或等待什么。

票数 2
EN

Stack Overflow用户

发布于 2009-06-26 14:30:11

彼得在方法上是正确的,尽管你也许可以通过简单的检查来找出它。“不响应”意味着您至少在5秒内不处理事件队列中的事件(以前是2秒,但它们在10.4中增加了)。对于UI进程,这将创建一个旋转等待游标,但对于非UI进程,您并不能很容易地看到效果。

如果这是一个基于runloop的程序,这意味着您可能正在使用一个应该使用run循环和回调(异步)完成的阻塞(同步)操作来执行一些操作。或者,您需要第二个线程来处理阻塞操作,这样您的主线程就可以继续响应事件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1044039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档