需求:
最近在做一个UDP点对点通信模块,UDP服务端接收数据,然后调用相应的处理函数处理消息,如果处理消息函数耗时太长,将导致UDP服务端线程属于阻塞状态,为解决这个问题,将接收数据和处理数据进行了分层,分别创建了UDP服务接收线程和多个消息处理线程,两线程的桥梁是通过消息队列进行传输,具体过程为:UDP服务端接收数据存放到消息队列,不做相应的数据处理,消息处理线程从队列中提取消息然后根据消息类型调用不同的处理函数(这里要特别注意,如果是同类型的消息还是会出现阻塞,这里必须要通过加锁,串行的处理消息),附图如下: