ace学习之ACE

xiaoxiao2021-02-27  244

ace学习之ACE_Message_Block

1、copy() 不需要让写指针后移.   ACE_Message_Block* mb = new ACE_Message_Block(BUFSIZ);   mb->copy(buff); //buff先已经初始化 2、初始化mb后需要后移指针的情况   2.1   ACE_Message_Block* mb = new ACE_Message_Block(buff,len);   mb->wt_ptr(len);  //len是buff的长度 len = strlen(buff) +1                     // +1 表示后面的\0   2.2   ACE_Message_Block* mb = new ACE_Message_Block(BUFSIZ);   ACE_OS::sprintf(mb->wt_ptr(),buff);   mb->wt_ptr(len);   2.3   ACE_Message_Block* mb = new ACE_Message_Block(len,             ACE_Message_Block::MB_DA TA,             mb2,   //表示 mb->cont(mb2)             buff)   mb->wt_ptr(len); 3、让消息接成串cont()时,千万不要直接或接间的把它接成一个环    mb->cont(mb2);    mb2->cont(mb3); //ok    ***mb3->cont(mb);  //死定了 4、通知其它线程结束时,可以通过ACE_Message_Block::MB_STOP      ACE_Message_Block* lastMsg = new ACE_Message_Block(100 ,ACE_Message_Block::MB_STOP);   otherTask->putq(lastMsg);   otherTask在接收到的时候如下处理    int OtherTask::svc()    {           ACE_Message_Block* mb;            while(1)            {              getq(mb);             if(mb->get_tpye() == ACE_Message_Block::MB_STOP)            {               mb->release();               break; //退出这个永久限环)            }            else            {               handle_message(mb); //处理这条消息            }    return 0;                }
转载请注明原文地址: https://www.6miu.com/read-9213.html

最新回复(0)