网狐6.6内核引擎源代码 这个代码居然有错误。。

时间:2021-09-27 18:11:58

平时工作当中用网狐开发。不过版本肯定不是6.6,具体也不知道是什么版本,反正没有源码的啦。

从网上下载这么一个引擎源码。  我也没编译。

之所以下载这个是想自己写一个服务器。 拿来借鉴的。 

好了 ,说错误的地方:  数据库队列中 应该有一个地方调用死循环了

like this    while(1){//do something}

找到找代码的确有这样的地方

 

//线程运行
while (pServiceThread->m_bRun)
{
#ifndef _DEBUG
//运行版本
try
{
if (pServiceThread->OnEventThreadRun()==false)
{
break;
}
}
catch (...) { }
#else
//调试版本
if (pServiceThread->OnEventThreadRun()==false)
{
break;
}
#endif

 

咋一看没啥事。。不过问题出在 pServiceThread身上

 

它是 通过CServiceThread::StartThread 启动的线程。

然后CQueueServiceThread 是继承于CServiceThread的。

//启动线程
bool CServiceThread::StartThread()
{
…………………………
//设置变量
ThreadParameter.bSuccess=false;
ThreadParameter.pServiceThread=this;
ThreadParameter.hEventFinish=CreateEvent(NULL,FALSE,FALSE,NULL);



//启动线程
m_bRun=true;
m_hThreadHandle=(HANDLE)::_beginthreadex(NULL,0,ThreadFunction,&ThreadParameter,0,&m_uThreadID);
……………………
}

 

问题就出在

ThreadParameter.pServiceThread=this;它是继承类。怎么能等于本身的呢。。

改了一下

//启动线程
bool CServiceThread::StartThread(CServiceThread *pQueueThread)
{
……………………

//设置变量
ThreadParameter.bSuccess=false;
ThreadParameter.pServiceThread=pQueueThread;
ThreadParameter.hEventFinish=CreateEvent(NULL,FALSE,FALSE,NULL);

//效验状态
ASSERT(ThreadParameter.hEventFinish!=NULL);
if (ThreadParameter.hEventFinish==NULL) return false;

//启动线程
m_bRun=true;
m_hThreadHandle=(HANDLE)::_beginthreadex(NULL,0,ThreadFunction,&ThreadParameter,0,&m_uThreadID);

}

 

 

OK、