首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪种沟通方式更有效

哪种沟通方式更有效
EN

Stack Overflow用户
提问于 2014-04-16 11:24:50
回答 1查看 74关注 0票数 0

服务器(LINUX)中运行着两个进程,它们是PHPApp和C++App。PHPApp由PHP编写,C++App由C++编写。

现在,它们需要相互通信以执行以下任务: PHPApp向C++App发送请求,当C++App收到请求时,它从共享内存读取数据并进行一些计算,最后将数据返回给PHPApp。

上面有两种方法:

  1. PHPApp通过套接字与C++App通信。C++App将充当守护进程。
  2. PHPApp通过调用exec(.)与C++App通信。(php具有这样的功能)。在有来自C++App的请求之前,没有PHPApp进程,因此每个请求都需要一个C++App实例。

我想知道哪种方法更有效?

更新

PHPApp是基于Apache的服务器软件的一部分,因此可能有数百个PHPApp进程向C++App发送请求。PHPApp并行地提出请求。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 12:52:42

这完全取决于你想做什么。如果C++App像函数一样工作,因此输入-> C++App ->输出,而不是经常调用,那么只调用exec并生成它就有意义了。

另一方面,如果C++App必须每分钟处理大量请求,同时也要并行处理,那么将其构建为一个能够异步处理所有请求的守护进程就更有意义了。(boost::asio可以在这里帮助您)

为什么?因为( a)通过套接字进行通信比每次生成一个新进程花费更少;( b)因为假设您有10000个同时请求,那么exec方法将产生10000次C++App。你可以想象这最终会吞噬你所有的记忆。在守护进程方法中,您将只有10000个套接字连接,它可以在没有任何问题的情况下处理boost::asio。

但是要小心,异步方法肯定需要很好的工程。您需要以一种方式编写它,这样就不会有任何请求阻止其他请求,这可能会变得非常困难。所以我也会考虑这个问题。

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

https://stackoverflow.com/questions/23108058

复制
相关文章

相似问题

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