gpt4 book ai didi

objective-c - Mac OS X 上服务器和多个客户端之间的 IPC

转载 作者:行者123 更新时间:2023-12-03 17:59:24 25 4
gpt4 key购买 nike

我有以下情况:

服务器应该是守护进程。其他应用程序应该是客户端。许多客户端应该与服务器通信,以便一次由服务器完成他们的任务。这些任务例如复制文件、删除文件等。

我的解决方案:服务器有 5 个工作线程,每个线程都包含命名管道。每个管道的可用性状态都保存在共享内存结构中。当客户端想要与服务器通信时,它检查共享内存中哪个管道可用,然后打开该管道并在该管道上发送其消息,服务器的相应工作线程服务器该客户端请求。该工作线程在该管道上发送请求状态(成功/失败),以便客户端了解上次操作状态。

据我所知,Mac os x 上的管道是单向的,并且缺乏像 Windows 那样创建无限实例的能力。

什么机制最适合这种通信?

谢谢,瓦伊巴夫。

最佳答案

As far as I know, pipes on Mac os x are unidirectional & they lack capability of creating unlimited instances like Windows.

管道是单向的,但是 Unix sockets不是。如果您想将代码直接移植到 OS X,这可能就是您所追求的。

但是,可能有更好的方法来完成您想做的事情,包括类似 Distributed Objects 的方法我承认我从未使用过。即使您坚持使用套接字接口(interface),我认为一个套接字会更容易,使用一个线程监视套接字并在工作线程到达时将工作移交给工作线程,使用 listenaccept 。更好的是,有一个 NSOperationQueue 或一个调度队列来放置工作,然后操作系统将处理优化线程计数的任务。

关于objective-c - Mac OS X 上服务器和多个客户端之间的 IPC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8910315/

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