Какой метод обычно используется, чтобы обнаружить случай времени? - PullRequest
0 голосов
/ 25 сентября 2018

Для меня есть API для получения некоторых данных, таких как:

int API_func(pointer * data)

возвращаемое значение используется для оценки выполнения функции, и данные будут записаны по адресу указателя;но если что-то не так, API_func может не получить возврат, программа может застрять ,, поэтому мне нужен таймер для вычисления таймера при вызове API_func, и как только время превышает 30 с, мне нужно отправить сигнал в GUI, так какя могу сделать?Я - зеленая рука, поэтому я хочу знать, как работает Мастер? Мой метод :

Thread_1: основной поток, здесь API вызова,

Thread_2: поток по таймеру, включает функцию таймера

когда API вызова Thread_1 отправляет сообщение (FIFO) для активации функции таймера в потоке таймера, если API не может вернуть успешный результат, таймер в Thread_2 будет работать сверхурочно, а затем отправит сообщение в графический интерфейс?

какой метод лучше?большое спасибо!извините, я стекаюсь по стеку, поэтому я не могу выразить то, что имею в виду: поддельный код:

 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 голосов
/ 25 сентября 2018

Вы можете вызвать int API_func(pointer* data) в отдельном потоке и сообщить основному потоку с помощью условной переменной .Для int API_func(pointer* data) вы пишете обертку.пример в Как реализовать тайм-аут для функции в c ++

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...