fzw003的个人主页

http://www.qtcn.org/bbs/u/167440  [收藏] [复制]

fzw003

  • 3

    关注

  • 9

    粉丝

  • 100

    访客

  • 等级:新手上路
  • 总积分:95
  • 保密,2015-11-17

最后登录:2020-09-17

更多资料

日志

如何提升桌面端原生应用APP稳定性探究.

2018-06-21 15:47
     目前市面上原生应用APP内部通讯协议:HTTP TCP/IP。每一路通讯的搭建在内存和CPU资源均有消耗。
     单一运行的原生应用支撑线程有一个上限阈值。超过这个值,app奔溃。内存消耗殆尽,app奔溃。
     很明确要解决这种奔溃问题。就是要控制线程,控制内存。经典的控制手法,就是线程池,和内存池的概念。
     一个步骤就是将线程池和内存池结合起来。app应用的稳定性将理论提升N倍。
     提供一个框架内核思路[一个经典跳转操作,无缝解决线程池等待问题]

httpposter *httpcentter::getposter()
{
    while (ture)
    {
        waitbegin:
        if (m_icount >= m_HttpPoolcount)  {m_icount=0;}//防止越界
        if (!m_HttpPostGetPool.at(m_icount)->isbusy())
        {
            disconnect(m_HttpPostGetPool.at(m_icount), 0, 0, 0);//断开它的所有信号连接
            QPointer<httpposter> reslut = m_HttpPostGetPool.at(m_icount);
            reslut->setbusy(true);
            m_icount++;
            return reslut;
            break;//返回
        }
        else//如果http不够用就多申请几个
        {
            if(m_HttpPoolcount >30)
            {
               m_icount++;
               qApp->processEvents();
               goto waitbegin;//break是跳不出多重循环的
            }            
            QPointer<httpposter>  pNewHttpposget =  m_MemPool.Mempool_new();
            pNewHttpposget->setbusy(false);
            m_HttpPostGetPool<<pNewHttpposget;
            m_HttpPoolcount++;
            m_icount++;
        }
    }
}
分类:默认分类|回复:0|浏览:309|全站可见|转载
 

下一篇:

上一篇: 无聊用Qt写的一个看电影工具.

Powered by phpwind v8.7 Certificate Copyright Time now is:09-18 21:39
©2005-2016 QTCN开发网 版权所有 Gzip disabled