boost :: shared_future: многократное чтение значения

Я хочу использовать фьючерсы в многопоточном приложении C ++.
Значение, связанное с определенным обещанием, должно быть прочитано несколькими потоками.
Я, хотя 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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]