我有使用PcapDotNet
DLL 并发送数据包的应用程序。在某些Pcap
具有高速速率(~50 Mbit/Sec 或~9000 数据包每秒)的文件中,与原始Pcap
长度\持续时间相比,播放需要很长时间,我可以看到 ~25% 的 CPU(我有 4 个内核)是利用。我在项目页面中提出了这个问题,开发人员建议我并行我的程序,以便我可以更好地利用我的资源,因为这是单线程程序。
这是我发送数据包的函数的示例,它完成了最多的工作,该函数还包括几个events
像报告发送了多少数据包等...(不包括在 mt 示例中)
所以我的问题是,假设该函数是最有效的函数我怎样才能以更好的方式分配我的 CPU 资源?
using (PacketSendBuffer sendBuffer = new PacketSendBuffer((uint)capLength))
{
while (inputCommunicator.ReceivePacket(out packet) == PacketCommunicatorReceiveResult.Ok) // Read the packets from the file
{
if (packet != null)
{
try
{
_outputCommunicator.SendPacket(packet); // Send the Packets
_sentPackets++;
}
catch (Exception ex)
{
// Throw exception
}
}
}
}