服务端大神们,询问数据处理缓冲区问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
find

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

  •  
  •   find 2014 年 8 月 12 日 2913 次点击
    这是一个创建于 4272 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用QT开发一个服务端程序,主要接受100个设备发送过来的数据,然后分析数据存储在mysql(这里处理的时间可能超过1秒)。其中每一个设备每个1秒中发送一次数据,之前没有用缓冲区结果连接了3个设备就崩掉了,想知道就是除了加缓冲区还有么有其他的方法或者缓冲区是一个设备一个还是一共一个缓冲区
    7 条回复    2014-08-12 21:53:43 +08:00
    canesten
        1
    canesten  
       2014 年 8 月 12 日
    每个socket链接单独分一个缓冲区会比较省心
    find
        2
    find  
    OP
       2014 年 8 月 12 日
    @canesten 加入缓冲去过后,后面是不是还需要在开一个线程在读缓冲区,在对数据进行操作啊
    canesten
        3
    canesten  
       2014 年 8 月 12 日
    你打算轮询缓冲区?我不太理解你的思路。
    find
        4
    find  
    OP
       2014 年 8 月 12 日
    @canesten 的意思就是生产者和消费者,当接收到tcp连接的的时候开起一个线程(生产者),生产者就是接受到的数据放入缓冲区,然后就等下一次数据到来时候继续将数据放入缓冲区,(消费者)就是负责读取缓冲区域的数据,然后处理存入数据库,(问题是,这样有过TCP连接是不是要开很多线程)这样可以吗,或者还有更好的解决模型
    canesten
        5
    canesten  
       2014 年 8 月 12 日
    Epoll可以注册一个回调函数
    这样每次有新的生产者来放数据就可以直接调用你注册的函数了
    可以科普一下“多路复用”技术(I/O multiplexing)
    find
        6
    find  
    OP
       2014 年 8 月 12 日
    @canesten 刚看完epoll 的叙述,我想说的就是我的那种生存者,消费者那种可不可行,或者直接接受TCP连接的时候用epoll可不可以
    wecoders
        7
    wecoders  
       2014 年 8 月 12 日
    1个链接1个线程,称之为多线程模型
    epoll多路复用,可以减少线程数
    生产者/消费者可行,一种典型的处理方式
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5378 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 07:11 PVG 15:11 LAX 00:11 JFK 03:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86