1
我正在尋找一種方法讓線程等待,直到條件滿足。類似於boost :: condition_variable。但是,如果沒有另一個線程通知當前線程,我希望在滿足條件時喚醒當前線程。Boost線程等待條件
我現在擁有: 有沒有更好的方法來做到這一點?
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](http://www.boost.org/doc/libs/release/doc/html/boost_asio.html)嗎?這似乎更貼切一點,至少在你的例子中。 –
我想你有兩個選擇,用繁忙的循環輪詢變量,或者用你不喜歡的通知方法推送它。 – andre