Message Block问题
在使用Proactor框架时一般怎么样将数据放到Message_Block再进行发送?我使用下边的方法为什么会出现异常,选择“终止”后,提示“内存不能为读”。handle_read_stream()
{
ACE_Message_Block &mblk = result.message_block();
if(!result.success || result.bytes_transferred()==0)
{
mblk.release();
delete this;
return;
}
else
{
USER_INFO *user_info=new USER_INFO; //USER_INFO是我定义的一个结构体,我发送的消息一般都是这个结构体
ACE_OS::memcpy(user_info,mblk.rd_ptr(),sizeof(USER_INFO));
switch(user_info->l1)
{
case MG_TRANSFER:
{
user_info->l2="测试";
ACE_OS::memcpy(mblk.wr_ptr(),user_info,sizeof(USER_INFO));
mblk.wr_ptr(sizeof(USER_INFO));
ws_.write(mblk,mblk.length()); //ws_定义为 ACE_Asynch_Write_Streamws_;
mblk.release();
}
break;
}
}
可以继续复用前一个消息块,不一定非得重新生成一个,再说消息块本身就有引用计数 可以直接把此消息块放入一个单独的发送线程中,这个问题本网站上有类似情况,你可以搜一下
页:
[1]