这里我有一个功能,它是监听模式.这个函数列出了我从某些设备获得的东西.
这时当我的函数处于侦听模式时,我想创建超时.如果我不会从特定设备得到任何响应,我想要退出此功能并且必须通知.
如果在此超时期间,如果我将从设备获得响应,那么我必须继续工作并停止此超时,并且在任何持续时间内完成此工作没有限制.
那么我该如何为一个函数实现这个东西呢.
请问我可以帮助我实现具有超时功能的这个东西.
根据您等待该设备响应的方式,您的问题的答案将会有所不同。基本框架是:
int do_something_with_device()
{
if (!wait_for_response_from_device()) {
return TIMEOUT_ERROR;
}
// continue with processing
}
Run Code Online (Sandbox Code Playgroud)
至于如何实施wait_for_response_from_device(),每个设备都是不同的。如果您使用套接字或管道,请使用select(). 如果您正在与需要繁忙等待循环的东西进行交互,它可能看起来像:
int wait_for_response_from_device()
{
time_t start = time(NULL);
while (time(NULL) - start < TIMEOUT) {
if (check_device_ready()) {
return 1;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当然,具体的实施check_device_ready()取决于您。