objective-c - Cocoa 分布式对象,长轮询,launchd 和 Activity Monitor 中的 "Not Responding"

标签 objective-c cocoa pyobjc launchd distributed-objects

场景:

我在 mac 应用程序和 launchd 守护进程(用基础类编写)之间有一个基于分布式对象的 IPC。由于我之前遇到过有关异步消息传递的问题(例如,我有一个 registerClient: 在服务器的根对象上,只要有事件发生,服务器的根对象就会通知/调用客户端代理对象中的方法),我做了长轮询,这意味着客户端从守护进程“收获”事件/通知列表。这种“收获”是通过服务器对象方法调用完成的,然后返回一个 NSArray 实例。

它工作得很好,直到几秒钟后,服务器对象的进程(通过 launchd 启动)开始被标记为红色,旁边带有“(未响应)”标签(在事件监视器内)。就像我说的,在功能上,它运作良好,但我们只是想摆脱这个“无响应”标签。

我怎样才能阻止这个“不响应”标签?

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

提前致谢。

最佳答案

Sample找出它正在做什么或正在等待什么的过程。

关于objective-c - Cocoa 分布式对象,长轮询,launchd 和 Activity Monitor 中的 "Not Responding",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1044039/

相关文章:

iphone - 如何修改这段旋转 CGImage 的代码,而不是在旋转时裁剪图像?

objective-c - 帮助填充数字字符串

按下主页按钮时 iOS 应用程序崩溃(当应用程序暂停时)

c - 先学C再学Objective-C

objective-c - NSCollectionView内存问题

cocoa - 处理 OS X Dock 拖放

iphone - 我可以使用 PyObjC 编写面向非越狱 iPhone 的 Python 应用程序吗?

objective-c - NSButton 子类为 colorwell 并防止 NSColorPanel 接触第一响应者

python - 使用 pip、easy_install、manual 安装 PyObjc 时遇到问题

macos - Apple Mac 蓝牙低功耗代码与预编译 header 和更新版本的 Xcode 相关的问题