Вы можете реализовать поведение, подобное отмене, таким образом:
Вы выполняете запрос в отдельном потоке, который продолжает работать независимо от того, истекло ли время ожидания. Тайм-аут происходит в главном потоке и устанавливает переменную в «1», отмечая, что это произошло. Затем вы делаете все, что хотите, в своей основной теме.
Поток запроса после его завершения проверяет, истекло ли время ожидания. Если это не так, он выполняет остальную часть работы, которую ему нужно сделать. Если он имеет, он просто разблокирует таблицы, которые он только что заблокировал.
Я знаю, это звучит немного расточительно, но период разблокировки блокировки должен быть практически мгновенным, и вы получите максимально приближенный к желаемому результату.