找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3659|回复: 2

关于ACE_Future的疑问

[复制链接]
发表于 2008-12-2 09:50:39 | 显示全部楼层 |阅读模式
为什么ACE_Future赋值时,只有第一次set会成功,第二次set就不起作用了,也就是说ACE_Future只允许赋值一次?请问这个样做的原因什么?谢谢达人。
发表于 2008-12-2 12:45:09 | 显示全部楼层
/**
   * Make the result available. Is used by the server thread to give
   * the result to all waiting clients. Returns 0 for success, -1 on failure.
   * This function only has an effect the first time it is called for
   * the object (actually, the first time the underlying ACE_Future_Rep has a
   * value assigned to it). Subsequent calls return 0 (success) but have no
   * effect.
   */
看源代码的注释有强调这一点的。
个人认为,原因是这样的,
因为对于主动对象模式,client与work线程,会持两个ACE_Future,但是内部引用的是一个ACE_Future_Rep,
一般工作线程在执行返回之后会对ACE_Future赋值,客户端一般会通过观察者模式得到ACE_Future_Rep的改变。
这时通过重载观察着模式的udpate方法,我们会对得到的改变进行处理,
一般来说需要对ACE_Future赋值一次就足够满足应用需求了。
楼主可以说明一次,set两次的应用场景么?或者set之后问题出在哪里了么?
具体可以参考源代码ACE_Future.h/cpp
 楼主| 发表于 2008-12-5 18:46:48 | 显示全部楼层

回复 #2 okibun0129 的帖子

非常感谢,没什么应用场景,只是学习的时候发现了这个问题
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-23 21:27 , Processed in 0.018350 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表