通常使用什么方法来检测时间情况?

时间:2018-09-25 08:11:01

标签: c++ c linux

我有一个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);
    }

1 个答案:

答案 0 :(得分:0)

您可以在单独的线程中调用int API_func(pointer* data),并通过条件变量向主线程发出信号。对于int API_func(pointer* data),您需要编写一个包装器。 How to implement timeout for function in c++

中有一个示例