服务端大神们,询问数据处理缓冲区问题

2014-08-12 17:39:06 +08:00
 find
用QT开发一个服务端程序,主要接受100个设备发送过来的数据,然后分析数据存储在mysql(这里处理的时间可能超过1秒)。其中每一个设备每个1秒中发送一次数据,之前没有用缓冲区结果连接了3个设备就崩掉了,想知道就是除了加缓冲区还有么有其他的方法或者缓冲区是一个设备一个还是一共一个缓冲区
2563 次点击
所在节点    问与答
7 条回复
canesten
2014-08-12 18:09:26 +08:00
每个socket链接单独分一个缓冲区会比较省心
find
2014-08-12 18:29:09 +08:00
@canesten 加入缓冲去过后,后面是不是还需要在开一个线程在读缓冲区,在对数据进行操作啊
canesten
2014-08-12 18:34:54 +08:00
你打算轮询缓冲区?我不太理解你的思路。
find
2014-08-12 18:42:39 +08:00
@canesten 我的意思就是生产者和消费者,当接收到tcp连接的的时候开起一个线程(生产者),生产者就是接受到的数据放入缓冲区,然后就等下一次数据到来时候继续将数据放入缓冲区,(消费者)就是负责读取缓冲区域的数据,然后处理存入数据库,(问题是,这样有过TCP连接是不是要开很多线程)这样可以吗,或者还有更好的解决模型
canesten
2014-08-12 18:47:56 +08:00
Epoll可以注册一个回调函数
这样每次有新的生产者来放数据就可以直接调用你注册的函数了
可以科普一下“多路复用”技术(I/O multiplexing)
find
2014-08-12 18:52:15 +08:00
@canesten 刚看完epoll 的叙述,我想说的就是我的那种生存者,消费者那种可不可行,或者直接接受TCP连接的时候用epoll可不可以
wecoders
2014-08-12 21:53:43 +08:00
1个链接1个线程,称之为多线程模型
epoll多路复用,可以减少线程数
生产者/消费者可行,一种典型的处理方式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/127470

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX