Мой код запускает запрос oracle select на сервере. Сервер может быть свободен или может быть занят в определенное время. Сейчас я создаю механизм тайм-аута в Pro*C, который истекает через 10 секунд и отменяет поток, который выполнял запрос оракула (если он все еще работает).
Теперь проблема, с которой я столкнулся, заключается в том, что функция тайм-аута должна завершать потоки через 10 секунд, и она делает это очень хорошо. Однако он не может понять, был ли запрос оракула все еще в состоянии ожидания во время завершения или он возвращал результаты/выполнение процедуры/бла-бла...
Мне нужна функция/механизм/что-нибудь, что могло бы запрашивать статус инициированного запроса оракула и действовать следующим образом: через 10 секунд,
IF (query is still in waiting state)
DO terminate all threads;
ELSE IF (query is fetching data/doing some processing)
DO wait for the fetching/processing to complete and then terminate all threads;
Вызов функции Pro*C или Oracle был бы лучшим вариантом вместо использования сложного кода, если это возможно.