有一个API可以让我获取一些数据,例如:
int API_func(pointer * data)
返回值用于判断函数是否完成,数据将写入指针地址; 但是如果出现问题,API_func可能无法返回,程序可能会卡住,所以我需要一个计时器来计算调用API_func时的计时器,一旦时间超过30秒,我需要向GUI发送信号,那么如何我可不可以做? 我是新手,所以想知道大师是怎么做的? 我的方法是:
Thread_1:主线程,在此调用API,
Thread_2:定时器线程,包含定时器函数
当Thread_1调用API时,发送一条消息(FIFO)来激活定时器线程处的定时器功能,如果API无法成功返回,则Thread_2处的定时器将超时,然后发送一条消息到GUI?
还有什么更好的方法吗?非常感谢! 抱歉,我是 stackoverflow 的新手,所以我不知道如何表达我的意思: 假代码:
Thread_1:
set_timer_flag_on(FILE *time_flag_1)
API_func()
Thread_2:
if (1==check_timer_flag(FILE *time_flag_1))
{
timer_func(set_over_time);
}
最佳答案
您可以在单独的线程中调用int API_func(pointer* data)
,并通过条件变量向主线程发出信号。对于int API_func(pointer* data)
,您编写一个包装器。 How to implement timeout for function in c++ 中有一个示例
关于c++ - 通常使用什么方法来检测时间情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52493485/