1 copy() 涓嶉渶瑕佽鍐欐寚閽堝悗縐? ACE_Message_Block* mb = new ACE_Message_Block(BUFSIZ); mb->copy(buff); //buff鍏堝凡緇忓垵濮嬪寲
2 鍒濆鍖杕b鍚庨渶瑕佸悗縐繪寚閽堢殑鎯呭喌 2.1 ACE_Message_Block* mb = new ACE_Message_Block(buff,len); mb->wt_ptr(len); //len鏄痓uff鐨勯暱搴?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_DATA, mb2, //琛ㄧず mb->cont(mb2) buff) mb->wt_ptr(len);
3.璁╂秷鎭帴鎴愪覆cont()鏃?鍗冧竾涓嶈鐩存帴鎴栨帴闂寸殑鎶婂畠鎺ユ垚涓涓幆 mb->cont(mb2); mb2->cont(mb3); //ok ***mb3->cont(mb); //姝誨畾浜?/DIV>
4.閫氱煡鍏跺畠綰跨▼緇撴潫鏃?鍙互閫氳繃ACE_Message_Block::MB_STOP ACE_Message_Block* lastMsg =ACE_Message_Block ,ACE_Message_Block::MB_STOP)
otherTask->putq(lastMsg);
otherTask鍦ㄦ帴鏀跺埌鐨勬椂鍊欏涓嬪鐞?BR>
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); //澶勭悊榪欐潯娑堟伅 } } // end while return 0; }
|