码迷,mamicode.com
首页 > 数据库 > 详细

asynDBCenter(修改)

时间:2014-09-25 13:49:58      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   数据   div   sp   on   c   

asynDBCenter加入数据库心跳,其实是没有找到更好的方法,看看和以前有什么不同
mongo数据库重练,暂时没有找到好办法,只能这样定时访问
bool asynDBCenter::init(bool isInitRobot)
{
    if(isInitRobot)
        m_dbcenter->initRobot();
    bool ret = m_dbcenter->initDBCenter();
    m_lastCheckTime = GetTickCount();//记录了初始值
    if(ret)
        m_spThread.reset(new std::thread(std::bind(&asynDBCenter::threadLoop, this)));
    return ret;
}

//改成这种方式效率没有以前高了
/*
1.以前是通知的方式,然后有命令就立马唤醒线程
2.这种方式会导致线程不停的切换
*/

void asynDBCenter::threadLoop()
{
    while(1) 
    {
        CmdPkt pkt;
        if(get_front_and_pop(pkt))//上了把cmd包的锁,保护包,获取请求cmd包
        {
            pkt.process(pkt.on_process, pkt.json.c_str());//根据cmd请求,访问数据库
            continue;
        }
        if(GetTickCount() - m_lastCheckTime > 1000*10)//10访问一次
        {
            HeatBeat();//定时访问数据库
            m_lastCheckTime = GetTickCount();
        }
        else
        {
            boost::this_thread::interruptible_wait(1);
        }
    }
}

 

asynDBCenter(修改)

标签:style   blog   color   os   数据   div   sp   on   c   

原文地址:http://www.cnblogs.com/zzyoucan/p/3992177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!