首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(C++)用于将请求/响应关联到套接字上的理想设计模式?

(C++)用于将请求/响应关联到套接字上的理想设计模式?
EN

Software Engineering用户
提问于 2019-10-04 01:45:42
回答 1查看 341关注 0票数 4

我正在进行我的第一个大型C++项目,在我理解语言的同时,我正在努力学习使用它的优雅的设计模式。我在UDP套接字API上有一些低级别的网络,其中每条消息都包含一个递增的id,以促进请求和响应的关联。我想使用这些来创建一个更高级别的异步API,在这个API中,我可以发送一个带有回调的请求,这个回调会在响应时触发,就像在Python或JS中优雅的高级网络工作方式一样。对此有何建议?我考虑为所有回调提供一个简单的缓冲区,但如果有大量的流量,则需要非常大的缓冲区。我还需要一些方法来处理那些在超时后永远不会到达的回复。有什么建议吗?我有所有的Boost和C++ 11可供我使用。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2019-10-04 06:00:52

您所有回调的缓冲区基本上是不可避免的,我不会太担心它。所需的大小将取决于任何时候未执行请求的预期数量,而不是总流量,因此很有可能是有界的。根据可靠性要求,您可以实现一个可增长的缓冲区,但由于您正在处理一个不可靠的协议,这甚至可能是不必要的。

在您的网络级别上,处理超时并不是真正的问题,您的API用户只需要提供一个超时值和一个(可能为空)的超时回调,然后您只需要定期遍历回调缓冲区(粒度取决于典型的超时值,您不需要为每个单独的请求设置一个计时器),并调用旧请求的超时回调,就像收到返回消息时一样,将它们从缓冲区中删除。选择合适的超时时间是API用户的责任,可能取决于所处理设备的特性。

缓冲区是多个进程使用的共享资源,因此需要使用适当的同步原语保护访问。

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

https://softwareengineering.stackexchange.com/questions/399301

复制
相关文章

相似问题

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