ACE_Task::putq(转)】的更多相关文章

int ACE_Task< ACE_SYNCH_DECL >::putq (     ACE_Message_Block * , ACE_Time_Value *     timeout = 0    ) 提供了一个向线程中提交数据的方法 它是通过将提交数据插入到线程的消息队列来(msg_queue)完成这个操作的,我起初认为这个方法是完全异步的,也就是说调用时不会阻塞,但最近在使用线程池时,发现,如果msg_queue已满,则会阻塞,阻塞时时间长度,由putq的第二个参数来决定.调用putq…
一.基础功能介绍 1.ACE_Message_Block*,Windows消息用MSG结构表示,ACE_Task中因为不能预计各种应用中消息的类型,所以ACE_Message_Block基本上可以理解为是对一个指针的封装,这个指针指向实际的一块内存或是一个对象等等.在创建ACE_Message_Block时,可以指定是由ACE_Message_Block来管理内存(构造函数中指定一个 size_t类型的大小),还是由我们自己管理内存(构造函数中指定一个指针).而一个ACE_Message_Blo…
原文出自http://www.cnblogs.com/binchen-china,禁止转载. 上篇提到用Reactor模式,利用I/O复用,获得Socket数据并且实现I/O层单线程并发,和dispatch层把不同的I/O绑定到了不同的Event中去处理.也就是已经实现了多个client连接和通信,且可以把不同的I/O与Event句柄绑定,指定处理函数. 但是问题来了,多个用户连接时,I/O层可以通过复用以较快的速度处理连接和把过来的数据关联到绑定的Event函数执行.但是绑定Event函数获得…
为什么要使用ACE_Task来管理线程 从C#转到C++后,感觉到C++比C#最难的地方,就是在系统编程时,C#中有对应的类库,我接触到一个类后,就可以通过这个类,知道很多相关的功能.而在C++中,必须使用Windows API,但是Windows API的缺点反而是不系统.比如,想要创建一个线程时,C#中可以通过新建一个Thread类,我得到这个类后,就可以通过帮助或者MSDN了解到这个类中有哪些方法,如何管理线程等.但是C++中,创建一个线程,需要调用CreateThread,但因为它是一个…
转载于:http://www.cnblogs.com/TianFang/archive/2006/12/05/583231.html 我们在前一章中使用ACE_Thread包装时,你一定已经注意到了一些不够"优雅"的地方.那一章中的大多数程序都被分解为函数.而不是对象.这是因为ACE_Thread包装需要一个全局函数名.或是静态方法作为参数.随后该函数(静态方法)就被用作所派生的线程的"启动点".这自然就使得程序员要为每个线程写一个函数.如我们已经看到的,这可能会导…
ACE源码约10万行,是c++中非常大的一个网络编程代码库,包含了网络编程的边边角角. ACE代码可以分三个层次:OS层.OO层和框架层: OS层主要是为了兼容各个平台,将网络底层API统一化,这一层用户不关心. OO层则是对一些常用的数据结构或方法进行OO封装,方便上层使用,包括socket方法,进程.线程和他们的同步机制等. 框架层实现了一些优秀的网络框架. 1 ACE_INET_Addr 类名 ACE_INET_Addr 所在文件 INET_Addr.h 功能 处理和存储IP.端口.协议类…
转自:http://blog.csdn.net/mjp_mjp/article/details/4406059 1.多线程中的ACE_Reactor::EventLoop,当在多线程(池)中调用EventLoop时,需要注意,在Acceptor/EventHandler中要使用其中的方法Reactor()来获取ACE_Reactor的指针,不要使用ACE_Reactor::instance,道理很简单哟.不过,一定要注意,在编程时,使用Reactor()类方法,比使用单件的方法要好很多,起码安全…
1: 线程池组件的配置文件: [log] ;DEBUG = 0 ;INFO = 1 ;WARN = 2 ;FAULT = 3 level=0 ;SCREENOUT = 0 ;FILEOUT = 1 ;BOTH = 2 director = 2 ;TEST = 0 ;RUN = 1 mode = 0 ;ONE = 0x00 ;FOUR = 0x01 split = 0 ;AUTODEL = 0x00 ;MANUALDEL = 0x01 manager=0 [threadpool] minthrea…
一概述 Streams框架是管道和过滤构架模式的一种实现,主要应用于处理数据流的系统.其实现以Task框架为基础.Task框架有两个特性非常适用于Streams框架:一是Task框架可用于创建独立线程的并发环境,这适合应用于ACE Streams框架中的主动过滤器:二是Task框架有统一的数据传输结果——消息队列,这适用于Streams框架中的管道. 二ACE_Task类 这里主要介绍与Streams框架相关的部分. 成员变量 Task_T.h class ACE_Task : public A…
1    消息队列 ACE消息队列由三个部分组成:消息队列(ACE_Message_Queue).消息块(ACE_Message_Block).数据块(ACE_Data_Block) 1.1    ACE_Data_Block:通过计数器来决定数据块释放时是否被删除.只有计数器为0时,对象才会被删除. 1.1.1  构造函数: ACE_Data_Block (size_t size, ACE_Message_Block::ACE_Message_Type msg_type, const char…