Future에 Timeout 적용하기
22 Jan 2019 | C++Future에 Timeout 적용
future에 Timeout을 적용하는 예제입니다.
ROS 2.0 관련 코드라 직접적으로 동작은 되지 않겠지만, wait_until()을 이용해서 특정 시간을 기다리는 점에서는 사용방법이 동일합니다.
thread t1([client]() {
while (true) {
auto a = 0;
auto b = 0;
cout << "Input two number: " << endl;
cin >> a >> b;
auto req = make_shared<Add::Request>();
req->a = a;
req->b = b;
auto tp = std::chrono::system_clock::now() + std::chrono::seconds(3);
auto request = client->async_send_request(req);
auto status = request.wait_until(tp);
if (status == future_status::ready) {
auto resp = request.get();
cout << "Sum : " << resp->sum << endl;
} else {
cout << "Timeout !!!" << endl;
}
}
});