繁体   English   中英

可靠的UDP实施设计问题

[英]Reliable UDP implementation design issue

我一直在围绕UDP进行自定义,以使其可靠。 我有这个设计问题,只有在整个程序准备好并且开始将数据包从源发送到接收器后,我才意识到。

场景:我创建了一个用于接收数据包的单线程。 父级执行数据包发送作业。 由于这只是一个POC,因此我将缓冲区和公共数据结构保留为全局指针,由父级为其分配内存。 我正在照顾使用互斥的关键内存部分。

作为可靠性的一部分,我跨数据包发送了一些控制包。 在任何时候,客户端将发送数据包并从服务器接收控制包,而服务器将接收数据包并发送控制包。 我使用了单套接字,因为我的理解是send&recv可同时在单套接字和默认阻止下工作。

问题:出于测试目的,我从源向接收器发送了100个数据包。 不幸的是,服务器端的线程正忙于接收数据包并将其存储在缓冲区中。 在父线程获得上下文切换之前,服务器代码不会将数据包传递给应用程序。 这增加了整体通信中无法接受的延迟。

请帮助我了解问题所在; 可以进行哪些更改以提高性能?

在此先感谢Kedar

由于使用的是互斥锁,因此在发送数据包后在一个线程上释放互斥锁时,另一个线程应该使用该数据包。 也许您没有足够快地释放互斥量。

或者,让套接字的select()方法为您处理接收时解除阻塞。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM