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

标签 c++ c linux

有一个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/

相关文章:

C使用sha2哈希函数

c - 如何避免在c中打印ascii值?

c++ - 将 Arduino 库添加到 Atmel Studio 7 AVR C++ 项目 - 缺少 Arduino.h

c++ - if else 条件错误

c - 在setsockopt()中为SO_RCVBUF指定的新值何时生效?

linux - 如何将两个ffmpeg bin脚本合并为一个脚本

linux - curl 或读取每一行 url 文本文件,然后将每一行输出到标记为连续数字的单独文件 - 1 2 3 等

c++ - 计算机图形学中的最大凸面修补

c++ - 使用视觉样式设置 WinAPI 工具栏的背景色?

可以在用户空间代码中使用 likely/unlikely 宏吗?