首页 > 代码库 > asynDBCenter(修改)
asynDBCenter(修改)
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(修改)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。