我目前正在开发一个简单的 P2P 网络作为练习。网络中的每个节点都向其他节点的子集发送心跳,以便能够检测到已离开网络的节点。除了心跳包之外,当新节点加入/离开网络时,当他们想要定位资源(小文本文件)等时,我会发送数据包。所有数据包都是 UDP 数据包。
每当我收到一个数据包时,我都会启动一个新线程来处理该特定数据包。然而,我担心我在一个应用程序生命周期中启动的线程数量加起来相当多(特别是因为心跳)。(还有我想避免的死锁等风险)。
我想过有一个队列或其他东西,我将所有传入的数据包放入其中,并让一个线程一次处理来自该队列的所有数据包(类似于生产者-消费者模式)。我希望快速处理数据包,这样发件人就不会认为数据包丢失了。
处理大量不同传入数据包而不必为每个数据包启动新线程的最佳方法是什么?我应该使用我所拥有的,生产者消费的还是不同的东西?