提问人:schlumpel 提问时间:5/13/2022 最后编辑:schlumpel 更新时间:5/13/2022 访问量:79
CPP项目背景等待工作
CPP program background waiting for jobs
问:
我想拆分 C++ 程序的以下工作流:
Read serialized data (1 sec, which is already very fast for that size)
Search data (0.01 ms)
Return found data(0.00.. ms) Edit: found data is just a small file
显然,读取数据需要花费大部分时间。此外,正在读取的数据永远不会更改。为了加快工作流,我想读取一次数据,然后等待请求。就像 MySQL 数据库一样,它正在等待语句。或任何其他正在运行并等待执行某些操作的进程。 现在,我使用 shell 启动程序,它只会在 linux docker 容器内运行。
你会用什么方法做到这一点?
目标:程序始终在运行并等待来自另一个进程的搜索元数据(bash script?,nodejs exec 调用),然后执行搜索,然后返回数据(写入文件)
依赖项:我想在没有例如 nodejs v8 集成的情况下构建它
Boost Asio 是一个好的起点吗?我需要构建套接字服务器吗?有没有更简单的方法?
答:
0赞
Joseph Larson
5/13/2022
#1
这是非常基于意见的。
我会把程序变成一个REST服务器。不过,我讨厌boost,并推荐Poco::Net。如果您想查看示例实现:
[电子邮件保护]:jplflyer/ShowLib.git
再看看 RESTServer 类。
我使用JSON来传递消息。它已成为行业标准。
评论
0赞
schlumpel
5/13/2022
当然,这是基于意见的,这就是为什么我对你的意见非常感兴趣:-)谢谢你的回答!就目前而言,我使用过的所有REST服务器都与Web通信。我的程序将只接收来自本地系统的请求。这些信息会改变你的建议吗?
0赞
Joseph Larson
5/13/2022
如果你只想加载一次数据,那么你的程序需要跟上内存中的数据,这意味着你需要某种方式来与它通信。REST 意味着您不是自己编写套接字代码。我认为编码比你可能做的任何事情都容易得多。
0赞
schlumpel
5/16/2022
在做了更多的研究之后,我认为共享内存IPC是我正在寻找的。
0赞
DailyLearner
5/13/2022
#2
我曾用于网络通信,它是一个非常好的库,有很好的文档和示例代码。Boost.ASIO
但 Boost 是一个巨大的库。一个好处是你可以把它编译成一个独立的库,而不需要太多的boost头。在这里看看如何编译为独立库。Boost.ASIO
Boost.ASIO
评论