gpt4 book ai didi

cocoa - 需要帮助在 cocoa 中实现进程间通信

转载 作者:行者123 更新时间:2023-12-03 16:20:11 31 4
gpt4 key购买 nike

我开发了一个 cocoa 应用程序,现在我想运行它的几个实例(本地)。但所有正在运行的应用程序实例必须共享一些资源。

因此,我想制作一个“服务器”类型的第三个应用程序,可以处理 token 并共享强制资源。

然后我搜索一种方法来做到这一点,并找到“分布式对象”解决方案。

然后我开始使用在互联网上找到的几个示例来实现它,但总是有关于弃用或 ATC 的警告或错误......

有人能给我一个关于如何实现这一点的最新示例吗?

编辑:

我需要做的是:

  • 服务器上每个应用实例的标识
  • 应用程序向服务器发送“运行”请求并在运行强制进程之前等待 token
  • 服务器使用 FIFO 堆栈来存储“运行”请求
  • 服务器将 token 提供给应用实例
  • 应用程序向服务器发送“进程结束”消息,服务器将 token 提供给以下应用程序实例等等
  • 服务器还必须处理应用程序断开连接

感谢您的帮助,

最佳答案

您可能想要使用 XPC 服务而不是分布式对象。 XPC较新沙盒友好(如果您想通过 App Store 分发,这一点至关重要)。 Daemons and Services Programming Guide为您提供 XPC 的概念性概述以及一些其他内容。

但是,您需要决定如何最好地设计您的应用程序,因为您最了解您的要求。看看Designing Daemons and Services部分概述了总体设计的可能路线和最佳实践。如果您的应用程序完全在用户空间中运行(不是“针对系统上的所有用户”),如果您想提供用于启动和管理任务的 UI,则可以使用“登录项”作为服务器应用程序。

任务本身将是 XPC Service 的实例。如果我上面的假设是正确的,您可能会想要使用 NSXPCConnection API (最高级别的XPC API)用于您的远程过程calls between the login item app and its XPC service实例。您将使用您开发的协议(protocol)为您的应用创建并保留一个 NSXPCInterface 实例。对于您运行的每个任务实例,您将使用该接口(interface)建立一个 NSXPCConnection(您还将保留每个实例直到完成)。

服务的监听器实例将与服务的委托(delegate)对象(您设计的)对话,以决定是否接受连接以及如何响应您的接口(interface)协议(protocol)。建立连接后(上面的链接概述了几个步骤),您可以开始通过连接实例的 -remoteObjectProxy 向其发送协议(protocol)定义的消息(例如:[[ myConnection remoteObjectProxy] makeARandomCatMemeWithImageAtURL:someURL];)。该服务将向您的应用程序发送一些回复消息(通过调用应用程序的 -exportedObject 的方法,通过其连接提供)。

如果主应用程序是多用户或者您打算与另一台主机上运行的服务进行通信,则详细信息和方法会有所变化(“登录项”或“启动守护程序/代理”等),但我我是根据我认为您想要实现的目标来回复的。

我希望这会有所帮助。

关于cocoa - 需要帮助在 cocoa 中实现进程间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27588670/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com