用QT开发一个服务端程序,主要接受100个设备发送过来的数据,然后分析数据存储在mysql(这里处理的时间可能超过1秒)。其中每一个设备每个1秒中发送一次数据,之前没有用缓冲区结果连接了3个设备就崩掉了,想知道就是除了加缓冲区还有么有其他的方法或者缓冲区是一个设备一个还是一共一个缓冲区
1
canesten Aug 12, 2014
每个socket链接单独分一个缓冲区会比较省心
|
3
canesten Aug 12, 2014
你打算轮询缓冲区?我不太理解你的思路。
|
4
find OP @canesten 我的意思就是生产者和消费者,当接收到tcp连接的的时候开起一个线程(生产者),生产者就是接受到的数据放入缓冲区,然后就等下一次数据到来时候继续将数据放入缓冲区,(消费者)就是负责读取缓冲区域的数据,然后处理存入数据库,(问题是,这样有过TCP连接是不是要开很多线程)这样可以吗,或者还有更好的解决模型
|
5
canesten Aug 12, 2014
Epoll可以注册一个回调函数
这样每次有新的生产者来放数据就可以直接调用你注册的函数了 可以科普一下“多路复用”技术(I/O multiplexing) |
7
wecoders Aug 12, 2014
1个链接1个线程,称之为多线程模型
epoll多路复用,可以减少线程数 生产者/消费者可行,一种典型的处理方式 |