活动对象(Active Object)笔记

 

1、  与多线程的区别

多线程是抢占式任务处理,活动对象机制是协作式任务处理

2、  需要理解的概念

异步服务、活动对象规划器 AS Active Scheduler )、活动对象 AO Active Object )、信号量


异步服务 :一般在单独的进程(肯定是单独的线程),采用 client-server 机制提供服务。

AO : 封装了异步服务的请求,以及请求完成时 AS 会调用的处理函数 RunL 。发出异步服务后需要调用 SetActive 改变 iActive 标志  (置 true , 服务请求完成发出信号时会改变 AO iStatus ,不再是 KrequstPending.

AS 接收到信号后,结束循环等待查找 iActive 标志位为 true iStatus 不为 KrequstPending 的服务请求完成的活动对象,重置 iActive false, 调用其 RunL() 函数 . 当没有符合条件的时循环再次等待。

3、  AS

一般每次线程系统都会实现活动规划器,但控制台程序和 DLL 需程序员自己实现,先 new install start,stop

4、  AO

继承 CActive 虚基类,实现三个虚函数 RunL(), RunError(), DoCancel()

取消 AO 时调用 Cancel Cancel 会调用 Docancel.

         实现一个异步请求的函数,在发出异步请求后,调用 SetActive()

5、  常见错误

忘记调用 CActiveScheduler::Add() ,把AO 添加到AS 的活动对象列表

发出异步请求后忘了调用SetActive()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值