MyQueue<DatagramPacket> queue;
while(true){
udpSocket.receive(receivePacket);
putReceviedPacketToQueue(receivePacket);
}
我有一个UDP服务器,它接受UDP数据包并将其放入我自定义实现的队列中,就像主要存储这些DatagramPackets的数据结构一样。 此数据结构的插入和删除方法已同步。
有100个不同的线程处理这些DatagramPackets。它们从MyQueue同步删除DatagramPacket,然后独立处理该Datagram数据包。
总的来说,我有101个线程1用于接收UDP数据包,其他100个用于处理它们。
我的问题是:
我正在测试这个AWS服务器,我的服务器升级到足以处理2000 UDP数据包/秒。
我想知道问题可能是什么。我的MyQueue插入和删除工具是占用太多时间还是我的100处理线程导致问题或者一个线程无法接收2000个数据包/秒?
答案 0 :(得分:3)
因为UDP是一种不可靠的传输,但也因为如果要将print(A(0,2))
入队,则每DatagramPackets
需要一个新的,否则接收将覆盖前一个。还有一个新的基础receive()
数组。