boost :: shared_future:多次读取值

时间:2012-09-20 08:54:46

标签: c++ boost boost-thread

我想在多线程C ++应用程序中使用future。 与特定承诺关联的值应由多个线程读取。 虽然我想使用boost :: shared_future,但不幸的是我只能读取一次这个值。

如何多次读取该值?

boost::promise<std::string> dataProm;

boost::shared_future<std::string> sharedFut1( boost::move(dataProm.get_future()) );
boost::shared_future<std::string> sharedFut2( sharedFut1 );

dataProm.set_value( std::string("Hello World") );           // (in the producer thread)

std::cout << "Test1: " << sharedFut1.get() << std::endl;    // (in consumer thread 1), result: "Test1: Hello World"
std::cout << "Test2: " << sharedFut2.get() << std::endl;    // (in consumer thread 2), result: "Test2: "
std::cout << "Test3: " << sharedFut1.get() << std::endl;    // (in consumer thread 1, again), result: "Test3: "

(为了支持较旧的编译器(MSVC ...)我想使用Boost而不是新的C ++ 11东西。)

提前致谢!

0 个答案:

没有答案