Hi All. I am trying to use Futures, but not getting the expected result. The code below works some times, and other times it throws exception "terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::promise_already_satisfied>
' what(): Promise already satisfied"
Any help will be appreciated. Thanks Kazz. //-------------------------------------------// boost::promise<int> pt; // holds final calculated result void worker1() { // do any processing using algorithm A srand ( time ( NULL) ); int delay = rand() % 5 + 1; boost::this_thread::sleep( boost::posix_time::seconds(delay)); // result calculate pt.set_value(1); } void worker2() { // do any processing using algorithm B srand ( time ( NULL) ); int delay = rand() % 5 + 1; boost::this_thread::sleep( boost::posix_time::seconds(delay)); // result calculated pt.set_value(2); } int main() { boost::shared_future<int> ans(pt.get_future()); boost::thread th1(worker1); boost::thread th2(worker2); ans.wait(); std::cout<<ans.get()<<std::endl; std::cout<<"exiting"<<std::endl; return 0; }