多线程问题

freefen2008 2008-11-26 02:38:12
我有两个线程,其中一个在运行一段时间后,里面的打印信息不打印日志,不知道为什么?两线程如下:
void* CDateCollect::thCheck(void *param)
{
class CDateCollect* pObj = (class CDateCollect*) param;
int nRetVal;
int nCount=0;
char szPathName[PATH_LEN+NAME_LEN];
bool bNextFlag=1;
//记录核查话单文件结构
struct TicketSerial sTS;

pObj->m_Log->LogAdd("Type[%d] thCheck Start.......",pObj->m_iFileType);
while(!pObj->m_bExitFlag)
{

if(bNextFlag)
{
//遍历检查之前核查失败的文件
// printf("11111111111111111111\n");
list<TicketSerial>::iterator iter;
nRetVal=pObj->m_CheckList.size();
// printf("ZHU: Now Count is [%d]\n",nRetVal);
printf("List of size is %d\n",nRetVal);
for(iter=pObj->m_CheckList.begin();iter!=pObj->m_CheckList.end();)
{
if( (time(NULL)-(*iter).unCreatTime)>=3*SOFDAY)
//if( (time(NULL)-(*iter).unCreatTime)>=600)
{
printf("ZHU: Delete old date [%s]\n",(*iter).szFileName);
iter=pObj->m_CheckList.erase(iter);
printf("ZHU: Delete old date suc!!!!!! [%s]\n",(*iter).szFileName);
}
else
{
memset(szPathName,0,sizeof(szPathName));
pObj->GetFilePath(szPathName,(*iter).szFileName,(time_t)(*iter).unCreatTime);
pObj->m_Log->LogAdd("NOTICE: Type[%d]Get FileName From CheckList [%s]",pObj->m_iFileType,szPathName);
nRetVal = access(szPathName,R_OK);
// printf("222222222222222222222\n");
if(nRetVal==0)
{
pObj->CheckFile(szPathName,*iter);
iter=pObj->m_CheckList.erase(iter);
}
else
iter++;

}
}
//End
//获取要检查的新文件
memset(&sTS,0,sizeof(sTS));
// printf("3333333333333333333333\n");
memset(szPathName,0,sizeof(szPathName));
sTS.iFileType=pObj->m_iFileType;
pObj->GetFileName(sTS);
pObj->GetFilePath(szPathName,sTS.szFileName,(time_t)sTS.unCreatTime);
pObj->m_Log->LogAdd("NOTICE: Type[%d] Get FileName First [%s]",pObj->m_iFileType,szPathName);
bNextFlag=0;
}

//每5s检测一次已经到了生成时间的话单文件
if(nCount++%50!=0||((unsigned int)time(NULL)<sTS.unCreatTime))
{
usleep(4000000);
pObj->m_Log->LogAdd("continue: sTS.unCreatTime[%d] ",sTS.unCreatTime);
continue;
}
// pObj->m_Log->LogAdd("11111111111111111,nCount[%d] ",nCount);

// printf("111111111111111,nCount[%d]\n",nCount);
nCount = 0;
nRetVal = access(szPathName,R_OK);
if(nRetVal==0)
{
// printf("ZHU: [%s] exist, Next \n",szPathName);
pObj->CheckFile(szPathName,sTS);
printf("q2222222222222222222,nCount[%d]",nCount);
bNextFlag=1;
}
else
{
//待检查文件超过设定时间没有检查到,则插入到待查询队列,等下次查询
// printf("ZHU: Start:[%u] End:[%u] CreatTime[%u] TimeIntv[%d]\n",((unsigned int)time(NULL)-sTS.unCreatTime),(unsigned int)((pObj->m_nTimeIntv-2)*60),
// sTS.unCreatTime,pObj->m_nTimeIntv);
// printf("33333333333333333333333,nCount[%d]",nCount);
// pObj->m_Log->LogAdd("22222222222222222222,Time[%d] ",(unsigned int)time(NULL)-sTS.unCreatTime);
// pObj->m_Log->LogAdd("22222222222222222222,sTS.unCreatTime[%d] ",sTS.unCreatTime);
if( ((unsigned int)time(NULL)-sTS.unCreatTime)>=(unsigned int)((pObj->m_nTimeIntv-2)*60) )
{
nRetVal=pObj->m_Ora[OP_001]->InsertRecord((void*)&sTS);
if(nRetVal!=0)
{
pObj->m_Log->LogAdd("ERROR: Type[%d] Insert unsuc[%s] into ticketserial_tab failed! ECode[%d]",pObj->m_iFileType,sTS.szFileName,nRetVal);
}
else
pObj->m_Log->LogAdd("NOTICE: Type[%d] Insert unsuc[%s] into ticketserial_tab suc!",pObj->m_iFileType,sTS.szFileName);

pObj->m_Log->LogAdd("WARN: Type[%d] [%s] not exist! Insert CheckList for next check",pObj->m_iFileType,sTS.szFileName);
pObj->m_CheckList.push_back(sTS);
bNextFlag=1;
}
}


}//End
pObj->m_Log->LogAdd("Type[%d] thCheck Exit.......",pObj->m_iFileType);
return (void*)0;
}


第二个:
void* CProcess::thProcess(void *param)
{

class CProcess* pObj= (class CProcess*) param;
int nRetVal,nFetchOKNum,nTimeNum;
TicketErr* pTE= new TicketErr[MAX_FETCH_NUM];
char* szRowID= new char[MAX_FETCH_NUM*MAX_ROWID_LEN];


while(!pObj->m_bExitFlag)
{

int nKeyValue=0;
printf("11111111111111111111111\n");
nRetVal=pObj->m_oOraTE->SelectRecord(3,(void*)&nKeyValue);
//nRetVal=pObj->m_oOraTE->SelectRecord();
if(nRetVal==ERR_OCI_BT_CONNECTERR)
{
//数据库重连
printf("22222222222222222222222222222222\n");
pObj->m_oLog->LogAdd("ERROR: Connect Oracle Fialed! Try To Connect Again!");
pObj->DestroyDB();
nRetVal=pObj->InitDB();
while(nRetVal!=0)
{
printf("333333333333333333333333\n");
sleep(10);
pObj->DestroyDB();
nRetVal=pObj->InitDB();
pObj->m_oLog->LogAdd("ERROR: Connect Oracle Fialed! ECode[%d] Try To Connect Again!",nRetVal);
}
pObj->m_oLog->LogAdd("NOTICE: Connect Oracle Suc!");
}
else if(nRetVal!=0)
{
printf("4444444444444444444444\n");
pObj->m_oLog->LogAdd("ERROR: pObj->m_oOraTE->SelectRecord Failed! ECode[%d]",nRetVal);
}
else
{
printf("555555555555555555555\n");
nRetVal=pObj->m_oOraTE->FetchRecord((void*)pTE,szRowID,MAX_FETCH_NUM,sizeof(TicketErr),(int*)&nFetchOKNum);
// pObj->m_oLog->LogAdd("ERROR OF NUMBER IS [%d]",nFetchOKNum);
if(!(nRetVal==0||
(nRetVal==1&&nFetchOKNum>0)))
{
printf("6666666666666666666666\n");
usleep(100);
}
else
{
for(int i=0;i<nFetchOKNum;i++)
{

printf("7777777777777777777777\n");
// printf("ZHU: CreatTime: %u Level: %d szWarunMsg: %s sTatus: %d\n",pTE[i].unCreatTime,
// pTE[i].iLevel,pTE[i].szWarnMsg,pTE[i].cStatus);
nRetVal=pObj->SendTO(&pTE[i]);
if(nRetVal<0)
pObj->m_oLog->LogAdd("ERROR: pObj->SendTO Failed! ECode[%d]",nRetVal);
pTE[i].cStatus=1;
nRetVal= pObj->m_oOraTE->UpdateRecord(&pTE[i],szRowID+19*i,1,false);
if(nRetVal!=0)
{
printf("88888888888888888888\n");
pObj->m_oLog->LogAdd("ERROR: pObj->m_oOraTE->UpdateRecord Failed! ECode[%d]",nRetVal);
}
}
}//else
}
ArrayList sList;
if(pObj->m_oClient->GetConnectInfo(sList)==0)
{
printf("aaaaaaaaaaaaaaaaaaaaaaa\n");
pObj->m_oLog->LogAdd("ERROR: Connect Center Failed! Check Center!");
}
else
sList.RemoveAll();

while(nTimeNum++%50!=0)
{
printf("9999999999999999999\n");
usleep(100);
}
}//While
printf("$$$$$$$$$$$$$$$ quit \n");
return (void*)0;
}
...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqwx_1986 2008-11-29
  • 打赏
  • 举报
回复
瀑布汗.....
zlaxr8888 2008-11-29
  • 打赏
  • 举报
回复
帮你顶 啊,哥们
freefen2008 2008-11-26
  • 打赏
  • 举报
回复
自己顶下!
freefen2008 2008-11-26
  • 打赏
  • 举报
回复
2008-11-26 11:33:04.099continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:08.104continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:12.117continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:16.256continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:20.267continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:24.276continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:28.285continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:32.299continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:36.315continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:40.328continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:44.337continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:48.346continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:52.356continue: sTS.unCreatTime[1227670500]
2008-11-26 11:33:56.366continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:00.375continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:04.386continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:08.397continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:12.408continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:16.414continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:20.425continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:24.436continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:28.477continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:32.486continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:36.496continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:40.506continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:44.517continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:48.526continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:52.537continue: sTS.unCreatTime[1227670500]
2008-11-26 11:34:56.545continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:00.557continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:04.565continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:08.575continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:12.587continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:16.595continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:20.606continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:24.626continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:28.636continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:32.645continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:36.655continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:40.667continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:44.675continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:48.686continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:52.697continue: sTS.unCreatTime[1227670500]
2008-11-26 11:35:56.711continue: sTS.unCreatTime[1227670500]
2008-11-26 11:36:00.724continue: sTS.unCreatTime[1227670500]
2008-11-26 11:36:04.735continue: sTS.unCreatTime[1227670500]
2008-11-26 11:36:08.746continue: sTS.unCreatTime[1227670500]
2008-11-26 11:36:12.756continue: sTS.unCreatTime[1227670500]
2008-11-26 11:36:16.766continue: sTS.unCreatTime[1227670500]
2008-11-26 11:36:20.777continue: sTS.unCreatTime[1227670500]
List of size is 2
2008-11-26 11:38:00.066NOTICE: Type[0] Insert unsuc[11.20081126.139] into ticketserial_tab suc!
2008-11-26 11:38:00.066WARN: Type[0] [11.20081126.139] not exist! Insert CheckList for next check
2008-11-26 11:38:00.066NOTICE: Type[0]Get FileName From CheckList [/ISMG4/ticket/backup/2008/11/26/11.20081126.138]
2008-11-26 11:38:00.066NOTICE: Type[0]Get FileName From CheckList [/ISMG4/ticket/backup/2008/11/26/11.20081126.139]
2008-11-26 11:38:00.066NOTICE: Type[0] GetFileName [11.20081126.140]
2008-11-26 11:38:00.066NOTICE: Type[0] Get FileName First [/ISMG4/ticket/backup/2008/11/26/11.20081126.140]
2008-11-26 11:38:04.087continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:08.096continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:12.105continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:16.117continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:20.149continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:24.156continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:28.177continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:32.188continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:36.199continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:40.206continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:44.215continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:48.226continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:52.237continue: sTS.unCreatTime[1227670800]
2008-11-26 11:38:56.247continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:00.256continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:04.265continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:08.276continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:12.287continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:16.296continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:20.305continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:24.316continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:28.325continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:32.335continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:36.347continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:40.354continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:44.367continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:48.376continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:52.387continue: sTS.unCreatTime[1227670800]
2008-11-26 11:39:56.395continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:00.406continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:04.417continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:08.425continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:12.435continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:16.446continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:20.459continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:24.467continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:28.476continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:32.486continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:36.498continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:40.506continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:44.516continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:48.526continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:52.536continue: sTS.unCreatTime[1227670800]
2008-11-26 11:40:56.546continue: sTS.unCreatTime[1227670800]
2008-11-26 11:41:00.555continue: sTS.unCreatTime[1227670800]
2008-11-26 11:41:04.567continue: sTS.unCreatTime[1227670800]
2008-11-26 11:41:08.596continue: sTS.unCreatTime[1227670800]
2008-11-26 11:41:12.607continue: sTS.unCreatTime[1227670800]
2008-11-26 11:41:16.617continue: sTS.unCreatTime[1227670800]
2008-11-26 11:41:20.625continue: sTS.unCreatTime[1227670800]
List of size is 3
List of size is 4
List of size is 5
List of size is 6

后面就一直是List of size is 递增了,请问为什么没有跑到第二个线程去打印日志了。类似111111111111111,99999999的日志信息?
freefen2008 2008-11-26
  • 打赏
  • 举报
回复
打印的日志如下:

11111111111111111111111
555555555555555555555
6666666666666666666666
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
9999999999999999999
2008-11-26 11:31:44.296continue: sTS.unCreatTime[1227670200]
2008-11-26 11:31:48.305continue: sTS.unCreatTime[1227670200]
2008-11-26 11:31:52.316continue: sTS.unCreatTime[1227670200]
2008-11-26 11:31:56.326continue: sTS.unCreatTime[1227670200]
2008-11-26 11:32:00.337continue: sTS.unCreatTime[1227670200]
2008-11-26 11:32:04.347continue: sTS.unCreatTime[1227670200]
2008-11-26 11:32:08.356continue: sTS.unCreatTime[1227670200]
2008-11-26 11:32:12.367continue: sTS.unCreatTime[1227670200]
2008-11-26 11:32:16.374continue: sTS.unCreatTime[1227670200]
2008-11-26 11:32:20.386continue: sTS.unCreatTime[1227670200]
List of size is 1
2008-11-26 11:33:00.087NOTICE: Type[0] Insert unsuc[11.20081126.138] into ticketserial_tab suc!
2008-11-26 11:33:00.087WARN: Type[0] [11.20081126.138] not exist! Insert CheckList for next check
2008-11-26 11:33:00.087NOTICE: Type[0]Get FileName From CheckList [/ISMG4/ticket/backup/2008/11/26/11.20081126.138]
2008-11-26 11:33:00.087NOTICE: Type[0] GetFileName [11.20081126.139]
2008-11-26 11:33:00.087NOTICE: Type[0] Get FileName First [/ISMG4/ticket/backup/2008/11/26/11.20081126.139]

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧