Chování „podobné zrušení“ můžete implementovat tímto způsobem:
Dotaz spustíte v samostatném vláknu, které běží bez ohledu na to, zda vyprší časový limit. Časový limit nastane v hlavním vláknu a nastaví proměnnou na "1" označující, že k němu došlo. Poté si ve svém hlavním vláknu uděláte, co chcete.
Vlákno dotazu po dokončení dotazu zkontroluje, zda nastal časový limit. Pokud ne, udělá zbytek práce, kterou musí udělat. Pokud MÁ, pouze odemkne stoly, které právě zamkl.
Vím, že to zní trochu marnotratně, ale doba uzamčení a odemknutí by měla být v zásadě okamžitá a vy se tak přiblížíte co nejvíce požadovanému výsledku.