|  | 
 
 楼主|
发表于 2008-1-15 21:46:40
|
显示全部楼层 
| 搞定了。。把代码粘出来。希望对大家有用。。 复制代码 #ifndef _ACE_MESSAGE_BLOCK_MANAGER#define _ACE_MESSAGE_BLOCK_MANAGER#include "Config.h" class CMsgMgr {public:CMsgMgr() {};virtual ~CMsgMgr(){};public:void Init( int msgsize = 1024, int msgnum = 2048 );    void Release();ACE_Message_Block * AllocMsg( void );private:     ACE_Recursive_Thread_Mutex _lock;   ACE_Allocator * msg_allocator_;  ACE_Allocator * data_allocator_;  ACE_Allocator * buff_allocator_;};ACE_Message_Block * CMsgMgr::AllocMsg( void ){ACE_Message_Block *msg;ACE_NEW_MALLOC_RETURN( msg,  static_cast<ACE_Message_Block*>( msg_allocator_->malloc(sizeof( ACE_Message_Block ) ) ),  ACE_Message_Block( 1024,0,0,0,buff_allocator_,0,0,ACE_Time_Value::zero,ACE_Time_Value::max_time,data_allocator_,msg_allocator_ ),  0  );msg->reset();return msg;}void CMsgMgr::Init(int msgsize /* = 1024 */, int msgnum /* = 2048  */){typedef char BUFFCOUNT[1024];msg_allocator_=new ACE_Cached_Allocator<ACE_Message_Block,ACE_SYNCH_MUTEX>(msgnum);data_allocator_ =new ACE_Cached_Allocator<ACE_Data_Block,ACE_SYNCH_MUTEX>(msgnum*2);    buff_allocator_ = new ACE_Cached_Allocator<BUFFCOUNT,ACE_SYNCH_MUTEX>(msgnum*2);}void CMsgMgr::Release(){    delete msg_allocator_;delete data_allocator_;delete buff_allocator_;}typedef ACE_Singleton<CMsgMgr, ACE_Null_Mutex> MsgMgr;#endif
 | 
 |