我有一个API可以获取一些数据,例如:
int API_func(pointer * data)
返回值用于判断函数是否完成,并将数据写入指针地址; 但是如果出错,API_func可能不会返回,程序可能会卡住,因此调用API_func时我需要一个计时器来计算计时器,并且一旦超过30s,我需要向GUI发送信号,那么如何我可不可以做? 我是绿色的手,所以我想知道师父的工作吗? 我的方法是:
线程_1:主线程,在此处调用API,
Thread_2:计时器线程,包括计时器功能
当Thread_1调用API时,发送一个msg(FIFO)以在计时器Thread处激活计时器功能,如果API无法成功返回,则Thread_2处的计时器将超时,然后将msg发送至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);
}
答案 0 :(得分:0)
您可以在单独的线程中调用int API_func(pointer* data)
,并通过条件变量向主线程发出信号。对于int API_func(pointer* data)
,您需要编写一个包装器。 How to implement timeout for function in c++