Możesz zaimplementować zachowanie podobne do anulowania w ten sposób:
Zapytanie wykonujesz w osobnym wątku, który kontynuuje działanie niezależnie od przekroczenia limitu czasu. Limit czasu występuje w głównym wątku i ustawia zmienną na „1”, co oznacza, że wystąpił. Następnie robisz, co chcesz zrobić w swoim głównym wątku.
Wątek zapytania po zakończeniu zapytania sprawdza, czy nastąpiło przekroczenie limitu czasu. Jeśli nie, wykonuje resztę pracy, którą musi wykonać. Jeśli MA, po prostu odblokowuje stoły, które właśnie zablokował.
Wiem, że brzmi to trochę marnotrawnie, ale okres odblokowania powinien być w zasadzie natychmiastowy, a rezultat jest jak najbardziej zbliżony do pożądanego.