ACE_Task 理解
Table of Contents
1 ACE_Task 究竟是什么
1.1 类继承关系
1.2 结构: 线程
是一个主动对象, 简言之, 这个对象的主要处理函数 ( svn() ) 是在另外一个线程中运行的, 所以对主运行线程来说具有异步性. 因为拥有一个处理线程, 所以内部拥有一个消息队列, 由内部线程处理, 当然通过这个队列与外部线程进行通讯. 所以说, ACE_Task 就相当于一个拥有消息队列的线程.
1.2.1 激活这个线程: activate() ,
在这个函数里, 通过 this->thr_mgr-> ;spawn_n 内部的线程管理器来 spawn 了一个线程.
线程的主处理函数是 ACETask Base ::svc_run 这是一个静态函数:
注意这个函数的参数就是我们的的 svn() 函数地址了:
1.2.2 结束这个线程: wait() .
1.2.3 运行这个线程: svc() ,
一来是被动调用, 我们只需通过 active() 来启动线程即可. 二来这个是虚函数, 所以我们可以定制.
1.3 用处
这个线程, 是高级的线程, 称作任务.当作任务用,我们需要关注上面几个函数:
- activate() 开启
- wait() 结束
- svc() 重写过程
- …
这个线程与其他线程进行通讯的时候, 通过操纵消息队列来实现, 消息队列的相关操作有以下:
- putq() 放消息
- getq() 取消息
- …
Date: 2009-12-25 15:41:29
HTML generated by org-mode 6.30c in emacs 23