I read about condition variable and it's also not the best idea, because we
can receive signal only if we actually wait in this time. For example:
void setcondvar()
{
boost::this_thread::sleep_for(boost::chrono::milliseconds(200));
std::cout << "Set" << std::endl;
cond.notify_all();
std::cout << "After" << std::endl;
}
int main()
{
boost::mutex CondMutex;
boost::thread t1(setcondvar);
t1.join();
std::cout << "Before wait" << std::endl;
boost::unique_lockboost::mutex lock(CondMutex);
bool result = cond.timed_wait(lock,
boost::posix_time::milliseconds(1000));
std::cout << result;
return 0;
}
and we have 0 as result. Probably i should write some wrapper on cond
variable if i would like to have this functionality.
2015-03-24 23:40 GMT+01:00 Gavin Lambert
On 24/03/2015 22:28, Fu ji wrote:
Condition variable can be a really good solution to my problem, I have only problem with WaitForMultipleObjects because with cond_var I have to check all "events" in loop with cond.timed_wait. There is a better solution ?
If the events are intended to signal that data is available somewhere, then you could consider replacing them with futures instead, which can supply the data at the same time. There is a way to wait for one or all of a set of multiple futures, although not with a timeout.
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/ mailman/listinfo.cgi/boost