wishel 发表于 2009-6-28 15:05:51

原帖由 modern 于 2009-4-23 13:58 发表 http://www.acejoy.com/bbs/images/common/back.gif
只有在第一次set的时候,才会广播所有的观察者。


不是广播所有观察者。观察者的callback是在这个循环
          while (iterator != end)
            {
            OBSERVER *observer = *iterator++;
            observer->update (caller);
            }

后面的
return this->value_ready_.broadcast ();
应该是唤醒所有阻塞在this->value_ready_(没看其他部分代码,猜测是个条件变量)上的所有线程(不知道是干什么的线程)。

modern 发表于 2009-6-28 23:16:52

大概是我修饰词汇使用的问题吧,确实 observer->update (caller);
是在while循环内部依次的被调用的,这个代码已经表述的很明显了。
另this->value_ready_.broadcast ();这个条件变量阻塞了所有调用get函数的线程。

[ 本帖最后由 modern 于 2009-6-29 09:47 编辑 ]
页: 1 [2]
查看完整版本: 关于期货和观察者的关系,请指教