使用ACE_Task的时候要留意putq函数

原创 2006年06月15日 15:33:00

在使用ACE_Task的时候,可以把这个对象看成一个处理器对象,他有一个消息队列,有一堆的线程在处理这一个消息。所以在应用中使用这个东西的机会特别的多。这次我使用的时候发现一个这样的问题。如果数据的速度太快了的时候将会使调用putq函数调用不成功。
这是一个例子代码,其实每一个Task都聚集了一个msg_queue对象的指针,他有一个参数:high_water_mark,就是说,在这个队列中的每个元素的size之和的最高。他的默认值是1024*16。但是有可能还是被占满了。如果发现putq不成功的时候就要使用这个东西来调整水位了。

int ACE_TMAIN(int, ACE_TCHAR *[])
{
 MyTask task;
 task.star();
 task.msg_queue_->high_water_mark(16385);
 ACE_Message_Block *new1=new ACE_Message_Block(16384);
 task.putq(new1);
 new1=new ACE_Message_Block(1);
 ACE_Time_Value tv(0,1000);

 if (task.putq(new1,&tv)==-1)
 {
  cout<<"put时失败"<<endl;
 }
 getchar();
 return 0;
}

ACE_Task自然退出的问题

最近解决了以前遗留的ACE问题(原来的应用退出时实际上各子线程不是自然退出,而是因为进程终止而强制退出的),高兴!特此记录一下。我们的应用使用反应器框架模式,反应器框架通过任务的消息队列和具体处理任务...
  • stephenxu111
  • stephenxu111
  • 2008年12月01日 17:31
  • 2030

ACE_Task::putq

int ACE_Task::putq (     ACE_Message_Block * , ACE_Time_Value *     timeout = 0    )     提供了一个...
  • andywangcn
  • andywangcn
  • 2011年03月23日 10:23
  • 9991

获取 ACE 主动对象方法返回值的另外一种方法

从上一篇“按部就班实现ACE的主动对象”中我们可以看到,我们必须为所有要从客户异步调用的方法编写方法对象。每个方法对象都派生自ACE_Method_Object,并会实现它的call()方法。每个方法...
  • u010856711
  • u010856711
  • 2013年07月08日 15:17
  • 1205

ACE_Future实现了单写多读模式,可以用来异步方法调用的结果返回

ACE_Future实现了单写多读模式,可以用来异步方法调用的结果返回 激活对象调度者,继承的线程基类ACE_Task_Base1)      方法请求出列svr()2)      方法请求入列wor...
  • charryli
  • charryli
  • 2005年09月25日 20:49
  • 597

ACE入门---很好的文章

ACE入门   转自:http://www.cnblogs.com/dubingsky/archive/2009/07/22/1528292.html ACE编译 1. 设置环境变量 在...
  • FoxBryant
  • FoxBryant
  • 2012年06月03日 22:50
  • 6931

ortp事件处理源码分析

ortp事件处理源码阅读笔记结构ortp是使用c语言编写的一个库,里面的数据结构都是以c语言的形式写成的,都是有struct作为存储结构,一些专用的操作函数作为方法。这篇文章专注于其中的事件处理代码。...
  • bjrxyz
  • bjrxyz
  • 2017年02月13日 09:53
  • 566

ACE_Task介绍(生产者/消费者)v3.0

1ACE_Task 概述 ACE_Task是ACE中的任务或主动对象“处理结构”的基类。ACE使用此类来实现主动对象模式。所有希望成为“主动对象”的对象都必须由此类派生。同时可将它看作是更高级的、...
  • ClamReason
  • ClamReason
  • 2013年11月24日 18:08
  • 2573

fscanf函数的用法

以前解析有规律的文件的时候要么用正则表达式,要么就是傻傻的自己写程序来解析有规律的文件。今天突然发现c的库函数中有一个现成的可以解析有规律的文件的函数,就是fscanf()函数。哎 以前自己做了这么多...
  • niepangu
  • niepangu
  • 2016年12月22日 20:33
  • 705

关于sizeof在调用函数中获取被调函数数组长度的思考

我们知道, sizeof 是一个操作符,其作用是返回一个操作数所占的内存字节数。那么在函数调用中,如何求一个被调函数数组的长度呢? 现在我们来看下面的示例代码: #include void f...
  • FreeeLinux
  • FreeeLinux
  • 2016年06月14日 19:17
  • 801

ACE_Task介绍(生产者/消费者)

概述 ACE_Task是ACE中的任务或主动对象“处理结构”的基类。ACE使用此类来实现主动对象模式。所有希望成为“主动对象”的对象都必须由此类派生。同时可将它看作是更高级的、更为面向对象的线程...
  • wojiuguowei
  • wojiuguowei
  • 2015年04月09日 17:26
  • 445
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用ACE_Task的时候要留意putq函数
举报原因:
原因补充:

(最多只允许输入30个字)