ACE的ACE_Future只能用一次的设计原因推测和和主动对象好处推测
来源:互联网 发布:yii cms管理系统 编辑:程序博客网 时间:2024/05/17 05:11
template <class T> intACE_Future_Rep<T>::set (const T &r,ACE_Future<T> &caller){// If the value is already produced, ignore it...if (this->value_ == 0){ACE_GUARD_RETURN (ACE_SYNCH_RECURSIVE_MUTEX,ace_mon,this->value_ready_mutex_,-1);// Otherwise, create a new result value. Note the use of the// Double-checked locking pattern to avoid multiple allocations.if (this->value_ == 0) // Still no value, so proceed{ACE_NEW_RETURN (this->value_,T (r),-1);// Remove and notify all subscribed observers.typename OBSERVER_COLLECTION::iterator iterator =this->observer_collection_.begin ();typename OBSERVER_COLLECTION::iterator end =this->observer_collection_.end ();while (iterator != end){OBSERVER *observer = *iterator++;observer->update (caller);}// Signal all the waiting threads.return this->value_ready_.broadcast ();}// Destructor releases the lock.}return 0;}
只使用一次的原因是为了客户端可以确认,当前返回值是那一次功能调用的返回值。
举例,客户端触发了两次调用, 然后因某种原因只收到一次回复结果, 如果充许多次复写结果,那此时就搞不清,到底该回复是指那次调用结果的回复。
如果采用参数来区分, 又使问题复杂化,例如参数之间怎么做到不重复ID。
所以直接只充许使用一次是最快最简单的方法。
主动对象的好处: 在主动对象模式里, 执行功能不是在调用者处执行, 而是在被调用者处执行并且被调用者会在内部又消息的方式串行这些调用,从而解决多个调用者的并发调用对象功能的问题。
- ACE的ACE_Future只能用一次的设计原因推测和和主动对象好处推测
- mfc大幅更新原因的推测
- 检查和推测编码
- 关于Class对象、类加载机制、虚拟机运行时内存布局的全面解析和推测
- 关于DisPatchMessage的推测
- 关于Class对象、类加载机制、虚拟机运行时的内存布局的全面解析和推测
- 关于Class对象、类加载机制、虚拟机运行时的内存布局的全面解析和推测
- uc浏览器上网快的原因(推测)
- 关于System.in的推测
- 魔兽世界电子令牌数据库设计的一些推测
- 从猎头角度推测,搜狗的买卖对于互联网格局和薪水的影响
- 从猎头角度推测,搜狗的买卖对于互联网格局和薪水的影响
- 【转】从猎头角度推测,搜狗的买卖对于互联网格局和薪水的影响
- 虚拟语气和推测(一)
- 虚拟语气和推测(二)
- 虚拟语气和推测(三)
- Swift 类型安全和类型推测
- 对JFrame的getContentPane()的一些推测。
- Oracle RAC root.sh 报错 Timed out waiting for the CRS stack to start 解决方法
- php的strtotime函数源码分析
- 安装VIMP
- CString详解以及CString转换成char*
- 中间件
- ACE的ACE_Future只能用一次的设计原因推测和和主动对象好处推测
- 数据库sql语言
- PHP环境配置:Windows下XAMPP的安装说明与使用
- ubuntu常用软件安装
- Oracle 11gR2 RAC root.sh Deconfigure the existing cluster configuration 解决方法
- java设计模式
- Java环境变量的详细说明
- jquery 给连接上面加上hot图标
- ALsa Control 从上层到驱动的详解