[ACE程序员教程笔记]将同步方法转换为异步方法
来源:互联网 发布:adobe 软件 ico图标 编辑:程序博客网 时间:2024/05/29 16:39
对于比较耗时的处理(如IO操作),如果采用同步的调用方式,程序则会阻塞在当前调用的函数上,无法进行其它的操作,造成时间浪费,ACE提供了方法对象(ACE_Method_Object),可以实现将同步方法转换为异步方法的机制,下文中将以打印服务为例介绍如何将同步方法转换为异步调用的方法。
此方案采用了多线程处理的方式,将原来的类方法作为一个方法对象(ACE_Method_Object),每一次函数的调用都会创建一个方法对象,之后会将此方法对象加入到活动队列(activation queue),活动对象(ACE_Task)的服务函数中从队列中取出方法对象,并执行函数调用。
下面为日志类,主要包含Say和SayImpl两个函数,一个函数是供用户程序使用,另一个是供方法对象使用。
在实现代码中可以看到,每一次的函数调用都会创建一个MO对象,并将其压入队列;SayImpl模拟IO耗时操作。
方法对象是对Say的对象化,实现打印字符串的操作。每一个方法对应一个方法类
方法对象类的关键为call方法的实现,通过此方法可以调用Logger对象相关的函数
测试程序代码,针对pLogger对象执行100此函数调用,从其输出日志可以看出:每一次的函数调用,SayMO对象会被调用一次,调用完成之后会自动调用销毁函数;主程序线程与调用函数分别位于不同的线程中。
- [ACE程序员教程笔记]将同步方法转换为异步方法
- ajax方法异步与同步的转换
- 利用CActiveSchedulerWait 将异步操作转换为同步
- 利用CActiveSchedulerWait 将异步操作转换为同步
- 利用CActiveSchedulerWait 将异步操作转换为同步
- ACE中同步线程方法
- 同步转换为异步思考
- C# 同步异步方法
- 将Datatable数据转换为HTML方法
- 将int转换为CString的方法
- 将Datatable数据转换为HTML方法 .
- 将数字转换为字符串的方法
- 将UIImage转换为NSData的方法
- 将dBm转换为W的方法
- 将ttf转换为qpf的方法
- tornado 改同步阻塞为异步的方法!
- [ACE程序员教程笔记]Task间通讯
- 用GCD线程组与GCD信号量将异步线程转换为同步线程
- QQ最常用快捷键
- 通过liveCD进行ubuntu启动修复
- WINDOWS XP快捷键大全
- Linux基础系列-DEBUG
- CUDA/GPU下矩阵乘法的几种实现的C++源码
- [ACE程序员教程笔记]将同步方法转换为异步方法
- Ogre控件在网页中调用的问题
- oracle to_char 避免出现".0"
- 下载安装Cygwin
- spell check investigation
- 迈向架构师的第一步
- 什么人算是程序员??
- 坚持和良好心态近乎道
- Richard Feynman, 挑战者号, 软件工程