我一直在阅读 boost thread 文档,但找不到我需要的示例。
我需要在定时线程中运行一个方法,如果它没有在几毫秒内完成,则引发超时错误。
所以我有一个名为 invokeWithTimeOut() 的方法,如下所示:
// Method to invoke a request with a timeout.
bool devices::server::CDeviceServer::invokeWithTimeout(CDeviceClientRequest& request,
CDeviceServerResponse& response)
{
// Retrieve the timeout from the device.
int timeout = getTimeout();
timeout += 100; // Add 100ms to cover invocation time.
// TODO: insert code here.
// Invoke the request on the device.
invoke(request, response);
// Return success.
return true;
}
我需要调用invoke(request, response),如果在超时时间内没有完成,该方法需要返回false。
有人可以提供一个快速的 boost::thread 示例来说明如何执行此操作。
注意:超时以毫秒为单位。getTimeout() 和 invoke() 都是纯虚拟函数,已在设备子类上实现。