udp 多线程 接收数据,一个接收线程,多个处理线程,数据放入共享队列,带上锁机制即可

针对UDP多线程接收数据的场景,可以通过创建一个接收线程来获取数据,并将数据放入带有锁机制的共享队列。多个处理线程从队列中取出数据进行处理,确保线程安全。这种方式可以提高效率,避免因数据处理耗时而影响接收新数据。解决方案包括使用生产者消费者模型,创建线程池或者单个接收线程配多个处理线程,同时考虑数据库操作和日志记录的独立线程及同步机制。
摘要由CSDN通过智能技术生成

似乎没必要创建多个socket吧
UDP是基于报文的,因此,不同客户端发来的包是不会混在一起的
如果要提高效率,可以先把收到的报文放进队列,由另一个(或多个)线程来处理

TCP是面向连接的,因此必须有不同的socket对象来识别远程客户端

 

还是socket编程问题,UDP多线程接收
我在用UDP传输数据,一个服务器端、多个客户端,客户端发送数据不定时,长度不固定,有可能同时有多个客户端在像服务器端发送数据,server接收到数据后需要对数据进行处理,这个耗时有点长,可不可以设计成,服务器端接收到udp包后就新建一个线程对接收到的数据进行处理,然后同时又开始接收新的数据?

或者调用recv方法接收端收到数据后,,将包接收后存入一个缓冲区,然后迅速返回继续recv。

这个存入缓冲区怎么实现呢?最好附一下这个缓冲区设计操纵的代码,

------解决方案--------------------------------------------------------
可以采用多线程
------解决方案--------------------------------------------------------
服务端设计成多线程,一个接收线程,一个处理线程,(也可以多个处理线程,看CPU数),采用production&consumer模式建立。这样处理最快

同时其他模块也设计成独立

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值