【发布时间】:2013-09-24 13:21:34
【问题描述】:
我正在寻找一种方法让线程等待条件满足。类似于 boost::condition_variable 的东西。但是我不想让另一个线程通知当前线程,而是希望当前线程在条件满足时唤醒。
我现在拥有的: 有更好的方法吗?
int i = 100;//keep connection alive for 500*100 ms (roughly 1 minute)
while (!tcp_socket.available() && (i != 0))
{
if(!tcp_socket.isOpen())
{
break;
}
i--;
boost::this_thread::sleep(boost::posix_time::milliseconds(500));
}
if (tcp_socket.available())//data available to read?
{
//read data do stuff
}
【问题讨论】:
-
你看过Boost ASIO吗?至少对于你的例子来说,这似乎更合适。
-
我认为您有两个选择,使用繁忙循环轮询变量或使用您不喜欢的通知方法推送它。
标签: c++ multithreading boost