|
我使用的是ACE5.5版本,使用以静态连接库Unicode编码的方式使用
代码如下- int CProtocolProcessTask::svc()
- {
- ACE_Thread_Manager *mgr = this->thr_mgr();
- ACE_ASSERT(mgr != NULL);
- while(1)
- {
- //该服务被取消
- if(mgr->testcancel(mgr->thr_self()))
- return 0;
- ACE_Message_Block *mb = NULL;
- ACE_Time_Value tv(5);
- int iRet = this->getq(mb,&tv);
- if(iRet == -1 && errno == EWOULDBLOCK)
- continue;
- else
- {
- if(mb)
- {
- //协议逻辑入口
- ProtocolProcessMessage(mb);
- mb->release();
- }
- }
- }
- return 0;
- }
复制代码 主要是这两句话
ACE_Time_Value tv(5);
int iRet = this->getq(mb,&tv);
我设置的是5秒中的等待,可是this->getq(mb,&tv);从来不会等待进入iRet == -1 && errno == EWOULDBLOCK逻辑
我使用NULL会阻塞,不管tv(xx)中的数值有多大都会是这样,请高手给于解答,万分感谢 |
|